没有默认构造函数的继承?

XJY*_*Y95 -2 c++ inheritance constructor

由于继承的类没有默认的构造函数,因此我显式调用了继承的类的构造函数,而在的构造函数上我仍然得到了红色下划线(在VScode中) B

类“ A”不存在默认构造函数

类是否A必须获取默认构造函数?有没有什么办法解决这一问题?

这是简化的代码:

class A 
{
    public:
        int a_;

        A(int a): a_(a)
        {}
};

class B: public A
{
    public:
        A A1;
        A A2;

        B(int a1, int a2): A1(a1), A2(a2)
        {}
};

Run Code Online (Sandbox Code Playgroud)

Nik*_* C. 5

该错误与A没有默认构造函数有关。由于没有,因此无法初始化的A部分B。您需要类似:

B(int a, int a1, int a2): A(a), A1(a1), A2(a2)
{}
Run Code Online (Sandbox Code Playgroud)