Linking...
Directory.obj : error LNK2019: unresolved external symbol "public: void __thiscall indexList<class entry,100>::read(class std::basic_istream<char,struct std::char_traits<char> > &)" (?read@?$indexList@Ventry@@$0GE@@@QAEXAAV?$basic_istream@DU?$char_traits@D@std@@@std@@@Z) referenced in function _main
获取此错误以及与indexList实现相关的其他错误。我已经包含了所有正确的文件,不确定这意味着什么?
另外,使用VS .NET 2003 - 它们位于“源文件”和“头文件”下但是,我测试了删除indexLish.h并且错误没有改变?
答案 0 :(得分:2)
你拥有的是一个类模板。这意味着当编译器需要调用函数时,它将查看模板定义并根据需要生成相应的代码。
例如,如果尝试调用它,则以下可能中有一个编译时错误:
template <typename T>
void doSomething(const T& x) {
x->_this_function_does_not_exist_ever_();
}
但只要您不致电doSomething
,就不会有错误。
你遇到的问题是你的头文件告诉编译器“嘿,这些函数存在”,但是当编译器试图生成它们时,它找不到任何定义。 (您不能在源文件中“编译”定义并将它们链接起来,它们必须对调用者可见。)
最常见的解决方案是在.h
或.hpp
文件中简单定义整个类模板。
答案 1 :(得分:1)
您是否正在使用visual studio,然后将这两个文件包含在解决方案中然后运行。
答案 2 :(得分:1)