如何实现C++模板类头文件和实现文件分离,这个问题和编译器有关。
引用<<C++primer(第四版)>>里的观点:1)标准C++为编译模板代码定义了两种模型:“包含”模型和“分别编译”模型。2)所有编译器都支持“包含”模型,某些编译器支持“分别编译”模型。
问题的提出:(帖子在:http://topic.youkuaiyun.com/u/20101215/15/f4f270f2-f0f9-4c5f-8765-1bfde2aeebbf.html)
第一种方法:按C++primer中的“包含”模型,在定义模板类的头文件中的末行用语句:#include "template_compile.cpp"
在类模板头文件template_compile.h中:
在类模板的实现文件template_compile.cpp中:
在使用模板的测试文件use_template.cpp中:

本文探讨了在Visual C++ 9.0中实现C++模板类头文件和实现文件分离的三种方法,包括‘包含’模型、预处理器宏以及直接在测试文件中包含实现文件。实验表明,VC9.0不支持C++ Primer中提到的标准‘包含’模型和‘分别编译’模型,但可以通过特定技巧实现模板类的编译隔离。
最低0.47元/天 解锁文章
65

被折叠的 条评论
为什么被折叠?



