Почему при виртуальном наследовании по ромбовидному образцу наиболее производный класс ищет конструктор по умолчанию косC++

Программы на C++. Форум разработчиков
Anonymous
Почему при виртуальном наследовании по ромбовидному образцу наиболее производный класс ищет конструктор по умолчанию кос

Сообщение Anonymous »

Проблема:

Код: Выделить всё

class Base {
public:
Base(Base* pParent);
/* implements basic stuff */
};

class A : virtual public Base {
public:
A(A* pParent) : Base(pParent) {}
/* ... */
};

class B : virtual public Base {
public:
B(B* pParent) : Base(pParent) {}
/* ... */
};

class C : public A, public B {
public:
C(C* pParent) : A(pParent), B(pParent) {} // - Compilation error here
/* ... */
};
В указанной позиции gcc жалуется, что не может сопоставить вызов функции с Base(), то есть конструктором по умолчанию. Но C не наследуется напрямую от Base, а только через A и B. Так почему же gcc жалуется здесь?

Идеи?
TIA
/Rob>

Подробнее здесь: https://stackoverflow.com/questions/212 ... s-look-for

Вернуться в «C++»