您的位置:首页 > 编程语言 > C语言/C++

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

2017-03-14 19:39 295 查看
问题在于分离编译,将类.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()

{ ... }


特别的,即使在模板被实例化时也没有被扩展,只有每个成员函数被调用时才会扩展
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐