如何用模板参数对函数指针进行typedef
How to typedef a function pointer with template arguments
考虑一下:
typedef void (*ExecFunc)( int val );
class Executor
{
void doStuff() { mFunc( mVal ); }
void setFunc( ExecFunc func ) { mFunc = func; }
int mVal;
ExecFunc mFunc;
};
void addOne( int val ) { val = val+1; } // this could be passed as an ExecFunc.
非常简单。假设现在我想将其模板化?
typedef void (*ExecFunc)( int val ); // what do I do with this?
template < typename X > class Executor
{
void doStuff() { mFunc( mVal ); }
void setFunc( ExecFunc<X> func ) { mFunc = func; }
X mVal;
ExecFunc<X> mFunc; // err... trouble..
};
template < typename X > addOne( X val ) { val += 1; }
那么,如何创建模板化的函数指针呢?
在C++11中,您可以使用以下内容:
template<class X>
using ExecFunc = void(*)(X);
定义了CCD_ 1。
在C++03中,您必须使用以下内容:
template<class X>
struct ExecFunc {
typedef void(*type)(X);
};
并且在CCD_ 3中使用CCD_。
相关文章:
- 如何将成员函数作为回调参数传递给需要"typedef-ed"自由函数指针的函数?
- 向前声明指向类的 typedef 指针
- 使用智能指针指向 C 库中的结构,该结构通过 typedef 隐藏实现(即不完整的类型)
- 对于指向C++类的不透明C指针,正确的typedef是什么
- "typedef"类型名称是否可以像"struct"定义那样声明指向结构的指针?
- C++ typedef 函数指针,并在一个语句中声明一个指针
- 指向具有 2 个参数的 WINAPI 函数的 Typedef 指针
- 返回没有 typedef 的成员函数指针的语法是什么?
- Typedef 函数与函数指针
- 调用指针时违反 C++ Typedef 访问冲突
- 将指向前向声明类型的指针推送到 typedef'd 向量时出现编译器错误
- 将typedef方法作为指针函数传递
- 是无限的Typedef函数指针继承
- 带有功能指针的Typedef:函数不存在
- 如何将方法指针声明为Typedef方法参数
- 函数指针typedef的语法是什么
- 如何用模板参数对函数指针进行typedef
- 使用 vs typedef 指针到noexcept-function不一致
- 推导 typedef'd 函数指针的模板参数
- C/C++:使用 typedef'd 函数指针来 *声明* 函数