如何在类模板中使用静态函数指针成员?

我正在Visual Studio中使用C ++,并且我的代码类似于以下内容:

template<typename T>
class ClassTemplate
{
public:
    static T* CallIt() { return ClassTemplate<T>::mFunctionPointer(); }

private:
    static T* (*mFunctionPointer)();
};


编译时出现“未解析的外部符号”错误。我想我应该在类声明之外做这样的事情:

template<typename T>
T* (ClassTemplate<T>::*mFunctionPointer)() = NULL;


不幸的是,然后我得到C2998,“不能是模板定义”。

有任何想法吗?

最佳答案

更改*的位置,以便

template<typename T>
T* (*ClassTemplate<T>::mFunctionPointer)() = NULL;


否则,您尝试将名称空间级别的变量mFunctionPointer定义为指向类ClassTemplate的成员的指针。

10-08 15:14