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

问题在于分离编译,将类.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()
{ ... }

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值