0
我已創建使用模板的C++模板錯誤 - 不能是模板定義
一個簡單的LinkedList類基本上我可以創建列表的一個實例是這樣
LinkedList<int> myList = LinkedList<int>();
現在我想補充一個方法給我的LinkedList並提供一個回調函數,以便函數可以回調我的代碼來執行一個動作。
我試圖創建以下
template< typename T>
typedef bool(*LinkedList_SortCallBack2)(T);
但是我收到一個編譯器錯誤
錯誤C2998: '布爾(_ CDECL * _cdecl LinkedList_SortCallBack2)(T)':不能是模板定義
作爲解決方法我已經使用void *但有沒有辦法做我想要的?所以我的回電是這樣
bool cb(int NewValue, int ExistingValue)
{
}
代替
typedef bool (*LinkedList_SortCallBack)(void *value1, void* value2);
bool cb(void* NewValue, void* ExistingValue)
{
int a, b;
a = *(int *)NewValue;
b = *(int*)ExistingValue;
if (a < b)
return true;
else
return false;
}
你靠哪一個C++標準的版本里面?在C++ 11之前,沒有typedef模板。即使C++ 11使用'using'來添加別名聲明來啓用它。 – ftynse