template<class K>
class Cltest
{
public:
static double (K::*fn)(double);
};
template<class K>
double K::*Cltest<K>::fn(double) = NULL;
如何初始化静态成员函数指针?
答案 0 :(得分:4)
您需要将*fn
括在大括号中
更正语法:
template<class K>
double (K::*Cltest<K>::fn)(double) = 0;
答案 1 :(得分:4)
如果使用适当的typedef简化语法,那么这样做会容易得多:
template<class K>
class Cltest
{
public:
typedef double (K::*Fn)(double); //use typedef
static Fn fn;
};
template<class K>
typename Cltest<K>::Fn Cltest<K>::fn = 0;
//Or you can initialize like this:
template<class K>
typename Cltest<K>::Fn Cltest<K>::fn = &K::SomeFun;
使用typedef
,您实际上将该函数的类型与变量名称分开。现在,您可以单独看到它们,这样可以更容易理解代码。例如,上面Cltest<K>::Fn
是类型,Cltest<K>::fn
是该类型的变量。