我知道当我声明函数而不是定义它时可能会出现这个问题。 但事实并非如此。
//In the 'H' file. Template class.
BSNode(T data);
\\In the cpp definitions
template <class T>
BSNode<T>::BSNode(T data)
{
_root = this;
_data = data;
_right = NULL;
_left = NULL;
}
然而,我得到了下一个错误:
Error 1 error LNK2019: unresolved external symbol "public: __thiscall BSNode<int>::BSNode<int>(int)" (??0?$BSNode@H@@QAE@H@Z) referenced in function _main c:\Users\a\OneDrive\ss\visual studio 2013\Projects\Project5\2\Source.obj 2_TREES
如果不是&#39; H&#39;之间的不兼容性,也可能导致此错误发生。而且&#39; cpp&#39;文件?
答案 0 :(得分:0)
使用带有commented and liked and reported
实例化的构造函数的代码也应该在int
文件中。编译器需要它来生成代码实例,因为它无法生成所有可能的实例。
几种解决方案:
.cpp
文件中的int
实例移动至少一次使用构造函数cpp
文件重命名为.cpp
文件,您可以将其包含在使用.template
个实例的每个文件中。BSNode
文件中添加template class BSNode<int>;
以强制模板实例化。