可能重复:
Why should the implementation and the declaration of a template class be in the same header file?
我的头文件有
template <typename T>
class AA : public BB<T>
{
public:
AA()
{ ... }
这很好用。但我需要将构造函数实现与头文件分开。
所以在cpp中,我有
template <typename T>
AA<T>::AA()
{ ... }
当我编译它时,它编译但我得到未解析的外部符号错误。我在这里缺少什么?
答案 0 :(得分:5)
您可以使用以下方法在实现文件中显式实例化模板:
template class AA<int>;
这将从模板生成一个定义,但只有在您知道类客户端将使用哪种类型时才有用
答案 1 :(得分:2)
如果将模板实现放入.cpp文件中,则需要确保它实例化:编译器不会自动为您执行此操作。大约一天前回答了同样的问题:do template always have to be in the header?