可能重复:
Why can templates only be implemented in the header file?
当我包含MyClass.h并执行:
MyClass<int, int> ccc = MyClass<int, int>();
ccc.myMethod1(3, 4);
我收到很多错误,告诉构造函数和方法未定义的引用......但是当我包含MyClass.cpp(这不是一个正确的代码原因)时,没有错误!如何解决?
我正在使用g ++编译Code :: Blocks
答案 0 :(得分:2)
原因是模板类没有编译,只编译实例化的模板。
经验法则:不要将模板实现放在cpp
文件中,而是直接放在标题中或标题包含的另一个文件中(如果你想从界面部分实现)。
E.g:
myclass.h
template<typename A>
class MyClass
{
...
};
#include "myclass.inc"
myclass.inc
//implementation goes here:
....