关于函数模版编译出现链接错误

来源:互联网 发布:怎么打开淘宝网址链接 编辑:程序博客网 时间:2024/06/05 02:59

问题在于分离编译,将类.h.cpp分离编译便会出错产生如此的错误 (编译不出错链接出错):


Test.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall Tree<int>::~Tree<int>(void)" (??1?$Tree@H@@UAE@XZ)


查资料说是链接实体在多个文件链接时产生多义错误,解决方法就是将定义与实现写在一起(构造函数与析构函数别忘加”{}”)


多数编译器不支持类模板分离编译,所以类模板直接在声明时定义就不会出现上述错误了


凡是形如此类的错误基本都是因为函数定义出问题

.h与.cpp分离编译,mian函数只include了.h而没有.cpp有时也会出现如上的错误

所以如果出现上述错误就先检查类中函数在定义上是否出现问题


------------------------------------------------------------------------------------------------------------------------------------

在书的附录处发现有方法进行类模板分离编译:

在.cpp文件中如此书写即可:

template <typename Obj>
Hen<Obj>::Hen()
{ ... }


特别的,即使在模板被实例化时也没有被扩展,只有每个成员函数被调用时才会扩展

0 0
原创粉丝点击