C++模板类头文件与文件分离的实现方法
如何分离C++模板类头文件和实现文件。这个问题与编译器有关。
引用<
提出的问题:(发帖地址:http://www.introzo.com/u/20101215/15/f4f270f2-f0f9-4c5f-8765-1bfde2aeebbf.html)
第一种方法:按照C++primer中的“include”模型,使用定义模板类的头文件最后一行语句:#include "template_compile.cpp"
类模板头文件template_compile.h中:
- 模板
- 班级基础
- {
- 公众:
- base() {};
- ~base() {};
- T add_base(T x,T y);
- };
- #include "template_compile.cpp"
类模板的实现文件template_compile.cpp中:
- 模板
- T 基础
::add_base(T x,T y) - {
- 返回x+y;
- }
在使用模板的测试文件use_template.cpp中:
- #包括
- #include "template_compile.h"
- 使用命名空间 std;
- void main()
- {
- 底座
bobj; - cout<
- }
该方法无法编译,“template_compile.cpp”文件无法“看到”“template_compile.h”文件。
但是:如果我把类模板的实现文件中的代码放在类模板的头文件中,并注释掉:#include "template_compile.cpp",那么编译运行就不会出错了。理论上,“将类模板的实现文件中的代码放在类模板的头文件中”与“使用定义模板类的头文件最后一行的语句:#include”template_compile.cpp 是一致的”,但是编译器就是打不通。
实验证明:VC9.0不支持C++primer中提到的“include”模型。
第二种方法:bruceteen提出:使用define
类模板头文件template_compile.h中:
- 模板
- 班级基础
- {
- 公众:
- base() {};
- ~base() {};
- T add_base(T x,T y);
- };
- #定义操
- #include "template_compile.cpp"
类模板的实现文件template_compile.cpp中:
- #ifdef 操
- 模板
- T 基础
::add_base(T x,T y) - {
- 返回x+y;
- }
- #endif
测试文件保持不变。
实验证明:在VC9.0中,该方法可以实现类模板头文件和实现文件的分离
方法三:
类模板头文件template_compile.h中:
- 模板
- 班级基础
- {
- 公众:
- base() {};
- ~base() {};
- T add_base(T x,T y);
- };
类模板的实现文件template_compile.cpp中:
- #include "template_compile.h"
- 模板
- T 基础
::add_base(T x,T y) - {
- 返回x+y;
- }
在使用模板的测试文件use_template.cpp中:使用#include "template_compile.cpp"
- #包括
- #include "template_compile.cpp"
- 使用命名空间 std;
- void main()
- {
- 底座
bobj; - cout<
- }
实验证明:在VC9.0中,该方法可以实现类模板头文件和实现文件的分离。
另外,实验表明VC9.0不支持“单独编译”模式。
-->相关文章
- 10-05 在vscode中统一vue编码风格的方法
- 10-05 如何在VSCode中使用d.ts文件进行js智能提
- 10-05 .NET Core 2.1中HttpClientF
- 10-05 萌新笔记——用KMP算法与Trie字典树实现屏蔽敏
- 10-05 NLP 开源形近字算法补完计划(完结篇)
- 10-05 BERT的通俗理解 预训练模型 微调
- 10-05 vs2010写入原始文件path_[CxImage
- 10-05 vs2010全局设置_vs2010如何进行全局设置
- 10-05 vs2010代码中如何显示行号_vs2010中如何
- 10-05 C#多线程,论多核时代的爱恨情仇
- 10-05 微信开放接口getUserInfo、login、g
- 10-05 让我们一起了解一下Redis的爱与恨吧
- 10-05 如何使用Win11 BitLocker驱动器加密
- 10-05 如何修复外部硬盘驱动器中的循环冗余检查问题
- 10-05 CD驱动器是什么意思?
- 10-05 win7企业版激活|正版windows7企业版激活
- 10-05 windows7激活后还是黑屏怎么回事|windo
- 10-05 windows7不激活会怎么样?告诉你不激活win
- 10-05 win7旗舰版永久激活码和激活步骤
- 10-05 windows7旗舰版激活密钥|正版windows
- 最近发表