类初始化如何设置儿子的父指针?

libralibra 2012-03-19 09:12:31
一个类如下,初始化时,如何设置儿子的父节点指针?


class Node
{
Node *parent;
vector<Node> children;

Node(void)
{
this->parent = 0;
for (int i=0;i<4;++i)
this->children.push_back(Node(this)); ////这个this无法传递给儿子,这种该怎么初始化呢?
}

Node(Node *p)
{
this->parent = p;
}
}


在push的时候,儿子节点无法获得父节点的指针,就无法设置所有儿子(这里有4个)的parent指针?
不知道xml或者html的类是怎么实现的?因为需要每一个Node都能获得其parent节点才行啊
...全文
155 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
libralibra 2012-03-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xiyoulaoyuanjia 的回复:]

这个有必要在初始化节点的时候初始化其子节点吗? 不能整个匿名子类吗?
[/Quote]

我这里为了简便,去除了很多初始化代码
初始化时初始化子节点列表是我需要的
原来把children定义为vector<Node *>就可以了
我为了方便一直定义为vector<Node>少了一个星号就不行了
xiyoulaoyuanjia 2012-03-19
  • 打赏
  • 举报
回复
这个有必要在初始化节点的时候初始化其子节点吗? 不能整个匿名子类吗?
muyi66 2012-03-19
  • 打赏
  • 举报
回复
class Node
{
Node *parent;
vector < Node* > children;

public:
Node(void)
{
this->parent = 0;
for (int i=0;i<4;++i)
this->children.push_back(new Node(this)); ////这个this无法传递给儿子,这种该怎么初始化呢?
}

Node(Node *p)
{
this->parent = p;
}
};
这样可以
zmshy2128 2012-03-19
  • 打赏
  • 举报
回复
只能使用
vector<Node*> children;

或者
vector<shared_ptr<Node>> children;

反正容器中是指针类似的东东才行

64,648

社区成员

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

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