C++ 中的模板类声明头文件和实现文件分离后,如何能实现正常编译?
来源:互联网 发布:数据多用list还是map 编辑:程序博客网 时间:2024/04/29 16:21
不建议你使用这种技术!这几乎就是 C++ 的一个补丁,基本上只会让你的程序变得更混乱。除非不得已,还是不用为好。以下是具体写法:
假设调用文件是这样:
// main.cpp#include "foobar.h"intmain(){foobar<int>f;*(f.get())=0;return0;}
头文件是这样:
// foobar.htemplate<typenameT>classfoobar{public:foobar():data(){data=newT;}~foobar(){deletedata;}T*get();// 这个方法是你想写在 cpp 文件里的private:T*data;};cpp 文件这么写:// foobar.cpp#include "foobar.h"template<typenameT>T*foobar<T>::get(){returnthis->data;}templateclassfoobar<int>;// 显式实例化
首先,这种写法兼容性不好,老编译器可能不支持。更可恶的是,这种写法使得你的模版实现竟然要依赖于调用者。就算你把显式实例化的部分放在单独的头文件里,然后 include 进 foobar.cpp 的最后一行,仍然有问题。因为这个头文件会被包含进不同的上层模块中,导致每修改一次,重新编译的内容大大增加。
3 0
- C++ 中的模板类声明头文件和实现文件分离后,如何能实现正常编译?
- C++ 中的模板类声明头文件和实现文件分离后,如何能实现正常编译?
- C++ 中的模板类声明头文件和实现文件分离后,如何能实现正常编译?
- C++的类模板的问题(实现文件和头文件放在一起), 因为模板不支持分离编译
- C头文件声明和实现分开
- 为什么C++编译器不支持模板头文件和实现代码分离的编译
- 为什么C++编译器不支持模板头文件和实现代码分离的编译
- 为什么C++编译器不支持模板头文件和实现代码分离的编译
- 为什么C++编译器不支持模板头文件和实现代码分离的编译
- 为什么C++编译器不支持模板头文件和实现代码分离的编译
- 为什么C++编译器不支持模板头文件和实现代码分离的编译
- 为什么C++编译器不支持模板头文件和实现代码分离的编译
- 为什么C++编译器不支持模板头文件和实现代码分离的编译
- 为什么C++编译器不支持模板头文件和实现代码分离的编译
- 为什么C++编译器不支持模板头文件和实现代码分离的编译
- 在VC9.0中实现C++模板类头文件和实现文件分离的方法
- 在VC9.0中实现C++模板类头文件和实现文件分离的方法
- 在VC9.0中实现C++模板类头文件和实现文件分离的方法
- iOS开发调起微信支付显示白色确定按钮的解决方案
- ArrayList类
- 如何去除字符串中所有空格,包括中间空格
- 【HDU5650 BestCoder Round 77 (div2) A】【水题】so easy 集合所有子集异或和的异或和
- 装qt的时候出现QT version is not properly installed, please run make install qmake使用不了问题
- C++ 中的模板类声明头文件和实现文件分离后,如何能实现正常编译?
- Openstack Icehouse Spice配置
- smarty模板引擎_8-扩展块函数插件
- 【mahapps.metro】使用如何添加WPF窗体图标
- Oracle学习笔记(5)——查询
- jvm笔记
- 【错误1】环境变量path的值超过1023字符,无法设置改值
- RelativeLayout 如何实现平分布局空间
- Cocos 安装和配置和初探(创建自己的Scene