首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

模板类不支持分离式编译,那就必须放到同一个文件中吗?解决办法

2012-05-11 
模板类不支持分离式编译,那就必须放到同一个文件中吗?C/C++ code//test.htemplate class Tclass Test{pu

模板类不支持分离式编译,那就必须放到同一个文件中吗?

C/C++ code
//test.htemplate <class T>class Test{public:  void set(T a);  T get();private:T data; };//test.cpp#include "test.h"template <class T>T Test<T>::get(){ return data;}template <class T>void Test::set(T a){  data = a;}//main.cpp#include <iostream>#include "test.h"using namespace std;int main(){   Test<int> test;     test.set(10);  cout<<test.get(); return 1;}



这样的程序,链接时会提示找不到set()和get()。是因为c++模板类不支持分离式编译的问题。

如果把test.h 和test.cpp的内容都放到main.cpp中,肯定没问题,但c++就没有一种办法放到不同文件中吗?

[解决办法]
有个技巧,你分两个文件写,但是源文件不要include头文件,而是头文件include源文件,这样在预处理时又会合成一个头文件

这不算奇技淫巧,C++ Primer有直接介绍的
[解决办法]
头文件include源文件,您的意思是可以include cpp文件吗?
探讨

有个技巧,你分两个文件写,但是源文件不要include头文件,而是头文件include源文件,这样在预处理时又会合成一个头文件

这不算奇技淫巧,C++ Primer有直接介绍的

[解决办法]
探讨
头文件include源文件,您的意思是可以include cpp文件吗?

引用:

有个技巧,你分两个文件写,但是源文件不要include头文件,而是头文件include源文件,这样在预处理时又会合成一个头文件

这不算奇技淫巧,C++ Primer有直接介绍的

[解决办法]
探讨
所以说C++的模板是动态库的大敌啊,人家在写公用的模板库的时候,为了不让头文件过度膨胀,也为了方便封装动态库,苦心孤诣的把非模板的、能共用的代码段抽出来,写入动态库

热点排行
Bad Request.