2011-12-29 48 views
1

可能重复:
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

不推荐,但你可以进入你的CPP,并在最后实例化所有可能的模板,如'AA a; AA c;'等解决链接错误 – 2011-12-29 23:47:30

+0

您需要购买使用Edison Design Group前端的编译器。实际上在模板上实现外部链接的唯一人。它在当前的C++标准中被弃用。爱迪生设计集团最有影响力的弃权票是来自爱迪生设计集团。 – 2011-12-29 23:48:36

+0

@parapurarajkumar我不知道我是否正确理解你。 – 2011-12-29 23:50:21

回答

4

可以使用显式实例在实现文件的模板:

template class AA<int>; 

这将生成一个模板的定义,但它使用的只有你知道你的班级客户将使用什么类型