无默认构造函数的继承

Inheritance without default constructor?

本文关键字:继承 构造函数 默认      更新时间:2023-10-16

由于继承的类没有默认构造函数,因此我明确调用了继承的类的构造函数,并且我仍然在B的构造函数上获得红色underline(in vscode(:

" 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)
        {}
};

错误是关于A没有默认构造函数的。因为没有,因此无法初始化BA部分。您需要类似的东西:

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