求大侠!关于泛型类的包含编译问题

cuidragoncui 2012-02-06 12:11:55
rt,比如

//在test.h
#ifndef D
#define D
template<class T>
class some
{
public:
some(const T&);
private:
T a;
};
#include<test.cpp>
#endif

//在成员函数定义的文件test.cpp
#ifndef GH
#define GH
#include<test.h>
//请教,我只有这样写才能通过编译。为什么这里还要包含test.h呢?在test.h不是已经包含了test.cpp吗?
template<class T>
some<T>::some(const T&b):a(b){}
#endif

...全文
67 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
一丝晨光 2012-02-07
  • 打赏
  • 举报
回复
”在test.h不是已经包含了test.cpp吗“
什么意思?test.h怎么会包含test.cpp呢?
pengzhixi 2012-02-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cuidragoncui 的回复:]
引用 1 楼 pengzhixi 的回复:

不要用什么包含编译,模板的使用就老老实实放一起。


我这不是分别编译阿,只是不理解为什么test.cpp文件里还要包含test.h,明明test.h已经包含cpp了阿
[/Quote]
我当然知道你的意思,只是有些编译器不支持而已。所以还是老老实实放一起
cuidragoncui 2012-02-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 pengzhixi 的回复:]

不要用什么包含编译,模板的使用就老老实实放一起。
[/Quote]


我这不是分别编译阿,只是不理解为什么test.cpp文件里还要包含test.h,明明test.h已经包含cpp了阿
pengzhixi 2012-02-06
  • 打赏
  • 举报
回复
不要用什么包含编译,模板的使用就老老实实放一起。
碎炎 2012-02-06
  • 打赏
  • 举报
回复
1.一般都是包含头文件的,包含cpp的很少很少见
2.模板是头文件与定义放一起的,目前编译器只能这样,不知道以后如何
Jim_King_2000 2012-02-06
  • 打赏
  • 举报
回复
模板的实现是必须放在头文件里的。模板的分离编译目前没有编译器支持。

64,318

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧