Наследование без конструктора по умолчанию? - PullRequest
0 голосов
/ 26 мая 2019

Так как у наследуемого класса нет конструктора по умолчанию, я явно вызываю конструктор унаследованного класса, и я все еще получил красное подчеркивание (в VScode) в конструкторе B:

noконструктор по умолчанию существует для класса "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)
        {}
};

1 Ответ

5 голосов
/ 26 мая 2019

Ошибка в том, что A не имеет конструктора по умолчанию. Поскольку это не так, нет способа инициализировать A часть B. Вам нужно что-то вроде:

B(int a, int a1, int a2): A(a), A1(a1), A2(a2)
{}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...