我在编译类时遇到问题,该类将函数指针作为成员变量。指针指向以类的实例作为参数的函数。
喜欢
template<class T, int N>
double (*f)(Vector<T,N> v);
我收到“错误:数据成员‘f’不能是成员模板”编译器是 gcc 4.2。
编辑
在使用我刚刚拥有的模板之前
double (*f)(Vector v);
这也行
double (*f)(Vector<double,2> v)
但我想要一个函数指针,用于以通用 Vector 作为参数的函数..
最佳答案
使用成员typedef
:
template <typename T, int N>
class Vector
{
public:
/// type of function pointer
typedef double (*FuncPtr)( const Vector& );
};
// concrete type
typedef Vector<double,10> VecDouble10;
// actual function
double func( const VecDouble10>& );
// usage
VecDouble10::FuncPtr fp = func;
关于C++ 指向函数的指针,该函数将模板化类的实例作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2723697/