模板类声明(.h)与定义(.cpp)分开存储
2021-09-14 18:12
429 查看
模板类声明(.h)与定义(.cpp)分开存储
在使用模板类构造的时候有时会出现无法解析的外部符号!!
当编译器看到模板定义的时候,它不立即产生代码。只有在看到用到模板时,如调用了函数模板或调用了类模板的对象的时候,编译器才产生特定类型的模板实例。[1]
简单来说,模板类的方法声明与定义必须放在同一个文件中,所以网上流传的有如下两种方法解决上面的报错。
将模板类方法的声明与定义统一存放在
.h
头文件中。将
.h
与.cpp
分开存储,只不过在导用的时候需要额外#include "xxx.cpp"
3. 模板类声明(.h)与定义(.cpp)分开存储
使用预编译指令限制重复定义的问题,在
xxx.h导入xxx.cpp
/*xxx.h*/ #ifndef __XXX_H #define __XXX_H // 此处存放你的模板类定义 template <typename T> class xxx { // ... } #endif #ifndef __XXX_CPP #define __XXX_CPP // 导入XXX.cpp 文件 #include "XXX.cpp" #endif
/*xxx.cpp*/ #ifndef __XXX_CPP #define __XXX_CPP // 注意.h头文件不参与编译 // 在编译的时候,本文件会参与编译,如此 // 会导入xxx.h头文件,保证此文件正确编译 #include "XXX.h" #endif // 以下存放你的模板类方法
相关文章推荐
- 为什么不能分开模板的声明和定义,把定义放到.cpp文件中?
- c++模板类/模板函数的声明与定义应该放在头文件里,不要分开来写类中函数的声明与定义
- 模板类的声明和定义中分离.h与.cpp
- C++ 在.h文件中声明,在.cpp文件中定义 模板函数和模板类
- 模板类:函数实现(.cpp)和函数声明(.h)分开的问题
- 模板类和模板函数的声明和定义分开文件写的方法
- C++模板中声明和定义是否可以分开存放在.h和.cpp文件中
- cpp中变量的声明与定义的区别
- 模板类的定义和声明为何要写在一起
- 模板类中方法的声明与定义 unresolved external symbol
- 在类模板的声明和定义中把.h与.cpp分离
- static变量不仅要在.h文件声明,而且要在cpp文件中赋值(定义实体)
- cpp——类——声明 定义 实现
- C++编译与链接(0)-.h与.cpp中的定义与声明
- 模板类声明和定义 (转)
- 在类模板的声明和定义中把.h与.cpp分离
- c++模板类/模板函数的声明与定义应该放在头文件里
- 模板类声明和定义为何要写一起
- 模板类中friend函数的声明与定义
- c++ 模板类 声明和定义都放在.h文件的原因