error C2998: 'XXXXXXX' : cannot be a template definition 的可能原因。
从错误信息的字面意思可以看出来是 XXXXX 不能作为模板定义。
但是为什么不能,并没有说明,最后我翻阅各种资料,各种尝试后,发现往往可能是由于找不到模板函数的某个参数的定义而导致的。
1 template<typename T> 2 BOOL Func(T &t_vaule, MyStruct &st);
上面这段函数,如果你没有定义 MyStruct 结构体,或者忘记引入了 MyStruct 的头文件,那么就会报 C2998 的错误。
如果你的模板函数的某个参数用了 STL 的一些容器,那么也不要忘记引入对应的头文件或者加上命名空间 std.