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