如何在另一个类中调用一个类的构造函数?

How to call a constructor for a class inside another class?

本文关键字:一个 构造函数 另一个 调用      更新时间:2023-10-16

我有一个类first,其中我想有另一个元素,它的类型是另一个类。 像这样:

class first{
private:
second secondAvl;
public:
first():second(-1){}  // i get erroe here
} 
class second: public Tree{
private:
public:
second(int key) :Tree(NULL,key1){} // here it worked to call contructor for tree
}

我的问题是,当我尝试在类第一个构造函数中调用第二个构造函数时,出现此错误:

调用"秒::秒()"没有匹配函数

有什么帮助我做错了什么吗?因为我在第二堂课中调用树的构造函数时也做了同样的事情,而且效果很好。

首先,按照您定义类的顺序,类secondfirst中使用时是未知的。您实际上应该收到其他错误消息。 其次,在初始值设定项列表中,您需要通过其名称(即: secondAvl(-1)),而不是按其类型: second(-1)

请参阅以下工作示例:

class second {
private:
public:
second(int key) {} // here it worked to call contructor for tree
};

class first{
private:
second secondAvl;
public:
first():secondAvl(-1){}  // i get erroe here
};

改为:

...
private:
second secondAvl;
public:
first() : secondAvl(-1)
{ }  
}

或使用 {} 进行统一初始化

...
private:
second secondAvl;
public:
first() : secondAvl{-1}
{ }  
}
相关文章: