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

时间:2018-05-15 17:59:16

标签: c++ class inheritance

我有一个类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()'

的匹配函数

任何帮助我做错了什么?因为当我在第二个类中调用树的构造函数时,我做了同样的事情,并且工作正常。

2 个答案:

答案 0 :(得分:1)

首先,按照您定义类的顺序,类session.beginTransaction(); session.save(user); session.getTransaction().commit(); second中使用时尚不可知。您应该实际获得其他错误消息。 其次,在初始化列表中,您需要通过其名称(即first)来处理变量以进行初始化,而不是通过其类型: secondAvl(-1)进行初始化。

请参阅以下工作示例:

: second(-1)

答案 1 :(得分:-1)

改为:

...

private:

    second secondAvl;
public:

    first() : secondAvl(-1)
    { }  
}

或使用{}

进行统一初始化
...

private:

    second secondAvl;
public:

    first() : secondAvl{-1}
    { }  
}