对于所有的喜欢把声明和定义分开放的C++er,在写模板时要把它俩放在一起一定感到十分郁闷,于是我本着非要棒打鸳鸯的倾向,找到了几种“棒”~
欢迎各位完善棒打鸳鸯技巧~
1.在模板的声明文件(.h)的最后一行
#include ".cpp"//模板的实现文件
2.在调用模板的文件在文件开头
#include ".cpp"//模板的实现文件
额,不才就找到这两种方式,然后就心满意足的关掉了Chrome~
另外,还找到了一个还不错的解释:自己copy了下来
原地址:http://hi.baidu.com/zhongyuan2810/item/75f7b74a927c1be6bcf45107
还有一个:http://www.cnblogs.com/zhengyuhong/archive/2011/12/29/2305597.html
个人收藏了这篇,愿因是易懂f(^^)
C++ 模板 声明和定义都放在.h文件的原因
首先,一个编译单元(translation unit)是指一个.cpp文件以及它所#include的所有.h文件,.h文件里的代码将会被扩展到包含它的.cpp文件里,然后编译器编译该.cpp文件为一个.obj文件(假定我们的平台是win32),后者拥有PE(Portable Executable,即windows可执行文件)文件格式,并且本身包含的就已经是二进制码,但是不一定能够执行,因为并不保证其中一定有main函数。当编译器将一个工程里的所有.cpp文件以分离的方式编译完毕后,再由连接器(linker)进行连接成为一个.exe文件。