Почему при виртуальном наследовании по ромбовидному образцу наиболее производный класс ищет конструктор по умолчанию кос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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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