从没有默认构造函数的类继承的类

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构造函数初始化它.


Bri*_*ndy 7

您需要通过类的初始化列表调用基本构造函数。

例:

class C : public B
{
public:
    C(int x) : B(x)
    {
    }

};
Run Code Online (Sandbox Code Playgroud)

当您不显式初始化B时,它将尝试使用没有参数的默认构造函数。