l********a 发帖数: 1154 | 1 c++的,新手
做了个类,类内部外部定义的格式大家就别看了,目前主要是问问流程问题
因为这个类我是递归初始化的,所以有一个构造器是接受一个Test *parent
class Test
{
Test *parent;
list children;
...
// 递归子构造函数
Test(Test *parent) // 构造器,接收一个Test指针,所有子构造器构造出的对象
的父节点
{
...
this->parent = parent; // 这里不知道为什么没有初始化好
for (循环)
{
this->children.push_back(Test(this));
...
}
// 主构造函数,解析文件内容构造
Test(string &fname) // 构造器,接收一个文件名
{
...
this->parent = NULL;
Test(this); // 调用递归子构造函数,这里好像没有将this传递给上面的构
造器
...
}
};
大概问题就是这样,是不是因为在递归构造的时候,每一个this都是等到子节点构造完
了才返回,这时候this才有意义,所以Test(this)传递过去的this是个空的?
那对这种父子节点互相引用的关系,应该怎么初始化?
欢迎大家指导。 | j******g 发帖数: 436 | 2 加个构造函数
Test() {
this->parent = this;
}
【在 l********a 的大作中提到】 : c++的,新手 : 做了个类,类内部外部定义的格式大家就别看了,目前主要是问问流程问题 : 因为这个类我是递归初始化的,所以有一个构造器是接受一个Test *parent : class Test : { : Test *parent; : list children; : ... : // 递归子构造函数 : Test(Test *parent) // 构造器,接收一个Test指针,所有子构造器构造出的对象
| l********a 发帖数: 1154 | | l********a 发帖数: 1154 | 4
这个不行啊
【在 j******g 的大作中提到】 : 加个构造函数 : Test() { : this->parent = this; : }
|
|