Конструктор с аргументами по умолчанию не может быть вызван при наследовании

Пожалуйста, посмотрите на код:

struct X {};

struct Foo {
    Foo (int n = {}, int p = {}) {}
};

struct Boo : Foo {
    using Foo::Foo;

    Boo (X n) {}
};

И использование:

Boo boo1;

Сообщение об ошибке (GCC 5.2.1):

error: no matching function for call to ‘Boo::Boo()’

я знаю это Boo не имеет конструктора по умолчанию, но конструктор Foo был унаследован и не может быть назван таким образом. Зачем? Означает ли это, что унаследованный конструктор может вызываться только в том случае, если производный класс не имеет конструктора (или конструктора по умолчанию)?

0 ответов

Другие вопросы по тегам