我使用C ++中的模板创建了一个简单的LinkedList类
基本上我可以像这样创建我的列表实例
LinkedList<int> myList = LinkedList<int>();
现在我想在我的LinkedList中添加一个方法并提供一个回调函数,以便函数可以回调我的代码来执行操作。
我尝试创建以下
template< typename T>
typedef bool(*LinkedList_SortCallBack2)(T);
但是我收到编译错误
错误C2998:'bool(_ 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;
}
答案 0 :(得分:0)
Typedef不能是模板。
在C ++ 11中,使用别名
template <typename T>
using callback = void (*)(T);
在C ++ 03中,将其放在结构
中template <typename T>
struct SortCallback {
typedef void (*)(T) type;
};
typename SortCallback<int>::type callback;