【发布时间】:2018-05-15 17:59: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
}
我的问题是,当我尝试在类第一个构造函数中调用第二个构造函数时,出现此错误:
没有匹配的函数调用'second::second()'
任何帮助我做错了什么?因为当我在第二个类中调用树的构造函数时我做了同样的事情并且效果很好。
【问题讨论】:
-
您需要命名成员,而不是成员的类型。
first() : secondAvl(-1) {}考虑如果您有两个second成员会发生什么。只有在调用基类型的构造函数时才能命名类型。请记住,second必须在用于first之前声明。 -
first():second(-1){}这表示:“当默认构造first时,通过调用值为-1的构造函数来初始化名为second的成员。”您没有名为second的成员,因此失败。 -
提供的代码无法触发报错。
标签: c++ class inheritance