wro*_*ame 7 c++ inheritance constructor class default-constructor
现在我有一个A继承自类的类B,并且B没有默认的构造函数.我正在尝试创建一个构造函数,A它具有与构造函数完全相同的参数B,但我得到:
error: no matching function for call to ‘B::B()’
note: candidates are: B::B(int)
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个错误?
Ste*_*sop 20
构造函数应如下所示:
A(int i) : B(i) {}
Run Code Online (Sandbox Code Playgroud)
冒号后面的位表示"使用其int构造函数初始化此对象的B基类子对象,值为i".
我猜你没有为B提供初始化器,因此默认情况下编译器尝试使用不存在的no-args构造函数初始化它.
您需要通过类的初始化列表调用基本构造函数。
例:
class C : public B
{
public:
C(int x) : B(x)
{
}
};
Run Code Online (Sandbox Code Playgroud)
当您不显式初始化B时,它将尝试使用没有参数的默认构造函数。