[英]Static function pointer member in a class template
如何在類模板中使用靜態函數指針成員?
我正在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
定義為指向mFunctionPointer
的成員的ClassTemplate
。
將您的定義轉換為此:
template<typename T>
T* (*ClassTemplate<T>::mFunctionPointer)() = NULL;
*應該出現在標識符之前(包括類范圍解析)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.