阅读了许多关于在类上设置模板的链接后,我遇到了这个令人困惑的编译器错误:
Linking...
main.obj : error LNK2019: unresolved external symbol "public: __thiscall test<int,int>::test<int,int>(int)" (??0?$test@HH@@QAE@H@Z) referenced in function _main
fatal error LNK1120: 1 unresolved externals
违规代码尽可能简单:
test.h
template<typename U, typename V>
class test {
public:
test(int number);
};
TEST.CPP
#include "test.h"
template<typename T, typename U>
test<T, U>::test(int number){}
的main.cpp
#include "test.h"
void main() {
test<int, int> a = test<int, int>(4);
}
显然,前面的代码没有任何用处,我只是构建一个模板模型来启动项目。任何人都可以解释我对构建此解决方案的理解不足以满足具有可以正确构造自身的模板化类的目的吗?
答案 0 :(得分:0)
将实现移至标题。
答案 1 :(得分:0)
由于模板的工作方式,您的实现必须位于头文件中,而不是单独的.cpp文件中。所以你需要这个:
template<typename U, typename V>
class test {
public:
test(int number)
{
}
};
答案 2 :(得分:0)
除了将实现移到标题之外,您还可以使用链接template definition and declaration in separate files
中问题中显示的技巧