请教一个类定义的问题

wswqwps 2007-10-22 10:49:28
#include <vector>

class Base:public std::vector<Base>
{
//...
};

请问这样会不会形成递归定义?这种写法初次见,感觉很奇怪。
...全文
96 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wswqwps 2007-10-22
  • 打赏
  • 举报
回复
问题是vc2005下面编译正常,没有任何问题。运行也正常。请教studying,这个是什么方法或者什么模式,
以及这样继承下来以后的继承结构是什么样子的。或者哪里有这样的资料?
yixiao386 2007-10-22
  • 打赏
  • 举报
回复
没见过这样写法的,似乎不可以吧
liwei84516 2007-10-22
  • 打赏
  • 举报
回复
这个没看到过,正在看模板
AI风 2007-10-22
  • 打赏
  • 举报
回复
这很正常吧,你去看看ATL模板类的源代码,有些主要的类就是这样实现的
ckt 2007-10-22
  • 打赏
  • 举报
回复
Base都还没定义
std::vector <Base > 怎么使用Base
0黄瓜0 2007-10-22
  • 打赏
  • 举报
回复
这个不行吧
AI风 2007-10-22
  • 打赏
  • 举报
回复
lz太客气了,这种钻研的精神值得学习,坚持下去,在技术上会有作为的
wswqwps 2007-10-22
  • 打赏
  • 举报
回复
解决了,见CRTP技术。分数全给studying了,小小的鄙视一下楼上所有都不肯定尝试就下结论说编译不过的人^_^
ontheline 2007-10-22
  • 打赏
  • 举报
回复
base没定义,编译器通不过的
wswqwps 2007-10-22
  • 打赏
  • 举报
回复
开始我认为会发生递归定义,开始我认为编译顺序看起来是这样:

1.编译器准备实例化Base,寻找Base的定义
2.编译器发现Base是一个派生类,于是去寻找基类,发现了vector模板
3.编译器于是先实例化一个用T来作为参数的vector
4.编译期检查参数T,发现是一个Base类,于是去寻找Base的定义
5.跳到步骤1

但是编译以后没有发生这样的警告或者错误。

64,649

社区成员

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

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