模板声明和定义要放在一个文件

 

将模板的声明和实现都放在头文件

整个原理都在资料1中进行详细的解释,这里只是贴个链接。

另外简单的总结一下:

  1. c++编译是分离的,每个source file单独编译
  2. 模板的定义在cpp文件中,并不会针对具体的模板参数生成代码。(因为从来没有传入过模板参数)
  3. 使用者在传入模板参数对其进行使用的时候,由于包含了其头文件
    1. 因此知道其声明,可以编译过
    2. 但是不知道具体的定义,从来没有生成过有具体模板参数的代码,所以到链接阶段才会报错。

参考资料

  1. 原理:C++为什么一般把模板实现放入头文件