用头文件中的模板分隔构造函数实现

Tae*_*hin 2 c++ templates

可能重复:
为什么模板类的实现和声明应该在同一个头文件中?

我的头文件有

template <typename T>
class AA : public BB<T>
{
public:
    AA()
    { ... }
Run Code Online (Sandbox Code Playgroud)

这工作正常.但我需要将构造函数实现与头文件分开.

所以在cpp,我有

template <typename T>
AA<T>::AA()
{ ... }
Run Code Online (Sandbox Code Playgroud)

当我编译它,它编译但我得到未解决的外部符号错误.我在这里错过了什么?

mar*_*inj 5

您可以使用以下方法在实现文件中显式实例化模板:

template class AA<int>;
Run Code Online (Sandbox Code Playgroud)

这将从模板生成定义,但仅当您知道类客户端将使用哪些类型时才有用