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.

原文地址:https://www.cnblogs.com/lebronjames/p/3803535.html