可能重复:
Why can templates only be implemented in the header file?
为什么在此处演示的单独文件中编译时,此代码链接不会。这是编译行
g++ ./templateC.cpp ./main.cpp
这是错误
main.cpp:(.text+0x11): undefined reference to `templateC<int>::templateC()'
collect2: ld returned 1 exit status
我一直以为你可以将实现放在一个单独的文件中。如果我不能,那为什么?
所有文件都被淡化以防止混淆,但是编译时出现了错误,如下所示。
这是我的文件
的main.cpp
#include "templateC.h"
main(int argc, char *argv[])
{
templateC<int> t;
}
templateC.h
template<class T>
class templateC
{
public:
templateC();
};
和templateC.cpp
#include "templateC.h"
template<class T>
templateC<T>::templateC()
{
}