模板类不支持分离式编译,那就必须放到同一个文件中吗?解决办法
模板类不支持分离式编译,那就必须放到同一个文件中吗?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文件吗?
[解决办法][解决办法]