C++ 类模板不能实现分离式编译

本文探讨了C++类模板在分离式编译时遇到的问题,并解释了为何类模板不能进行分离式编译。文章提供了具体的解决方案,即必须将类模板的声明和定义放在同一个.h文件中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++ 类模板不能实现分离式编译


朋友想用类模板实现队列,网上找到了源码,在同一个CPP里面可以正常编译运行,但使用分离式的方式就不能通过了。


错误

Vec_example.obj : error LNK2001: 无法解析的外部符号 public: class Vec < int > & __thiscall Vec< int >::operator=(class Vec< int > const &)” (??4?$Vec@H@@QAEAAV0@ABV0@@Z)
类似于上述描述的形式,别看错误这么长,其实道理很简单,弗拉基米尔·伊里奇·乌里扬诺夫不就是列宁嘛~


原因

错误的原因就是连接器找不到符号,这在之前的逻辑里面显然是不符合的,之后我做了一件事情大概知道了为什么了,我在main所在的文件里面include .cpp 文件后就恍然大悟,原来是类模板不支持分离式编译,即我们必须把类模板的声明和定义写在同一个.h文件中,找到原因后把类模板中相关的定义写在.h文件中,问题就解决了。

至于为什么 类模板不支持分离式编译。我不敢说,因为大神已经写得很好了,参考如下:
教科书式的回答:http://blog.youkuaiyun.com/pongba/article/details/19130
另一片写的很好的博文:http://www.cnblogs.com/BensonLaur/p/4322203.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值