C++模板类的定义和其成员函数定义要放在同一文件中

    我看过的C++书都说在*.h中写类的定义(成员函数只声明而未定义)、在*.cpp中写其成员函数的定义是一种比较标准的做法,对模板类也没做特别说明。于是,昨天写一个模板类时,我很自然地把代码分布在*.h和*.cpp中,调用此类的源文件中写上#include "*.h",却发现在连接时找不到函数。改为#include "*.cpp"后,顺利运行。

    之后我又写了个简单的模板类试验,发现结果一样。于是我删了*.cpp,把类的定义写到*.h中。

    原理可参见 http://blog.csdn.net/lichengyu/article/details/6792135 ,以下为摘录:

    “通常情况下,你会在.h文件中声明函数和类,而将它们的定义放置在一个单独的.cpp文件中。但是在使用模板时,这种习惯性做法将变得不再有用,因为当实例化一个模板时,编译器必须看到模板确切的定义,而不仅仅是它的声明。因此,最好的办法就是将模板的声明和定义都放置在同一个.h文件中。这就是为什么所有的STL头文件都包含模板定义的原因。

原文链接: https://www.cnblogs.com/linjunqing/archive/2012/12/27/2835199.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    C++模板类的定义和其成员函数定义要放在同一文件中

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/73750

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 下午4:04
下一篇 2023年2月9日 下午4:04

相关推荐