C++模板类/函数,将头文件与源文件分离

您所在的位置:网站首页 头文件和源文件必须同名吗 C++模板类/函数,将头文件与源文件分离

C++模板类/函数,将头文件与源文件分离

2024-06-30 21:50| 来源: 网络整理| 查看: 265

将包含模板的源文件与头文件分开

关键在于模板显式实例化。

解决方案 模板函数分离源文件 按一般方式编写.h和.cpp文件,但注意添加template 的声明;在.cpp文件末尾,添加模板显式实例化代码,如: // 显式实例化,注意,`template`之后没有``,若添加则会报错! // 每种将被使用的类型,均需要进行显式实例化 template void A::show(int &&); template void A::show(double &&); template void A::show(bool &&); 模板类分离源文件 分开编写模板类的.h和.cpp文件,注意添加template 的声明;在.cpp文件末尾,添加类的显式实例化代码,如: // 只需要class的显式实例化即可,不需要再写其成员函数的显式实例化代码 template class Base; 在使用该模板类的其他类的.h文件末尾,添加外部模板类的显式实例化声明(仅仅是多了个extern关键字): // 添加这行代码的目的,其实是为了消除编译警告。即便删掉它,也不会导致编译错误 extern template class Base;

前面是简单描述模板函数/类的源文件与头文件分离的方法,难免有疏漏。若仍存有疑问,可继续往下看具体案例。

示例代码 模板函数 t.h #ifndef _T_H #define _T_H class A { public: template void show(T &&t); }; #endif // _T_H t.cpp #include "t.h" #include using namespace std; template void A::show(T &&t) { string info = typeid(t).name(); cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3