У меня есть ромбовидная иерархия наследования: виртуальный X → {A, B} → Y → Z. Почему Z по умолчанию не инициализирует XC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 У меня есть ромбовидная иерархия наследования: виртуальный X → {A, B} → Y → Z. Почему Z по умолчанию не инициализирует X

Сообщение Anonymous »

В моем коде используется базовый ромбовидный узор:

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

     CommonBase
/  \
/    \
DerivedA  DerivedB
\    /
\  /
Joined
Это реализовано следующим образом: общий базовый класс имеет конструктор по умолчанию и конструктор, принимающий параметр:

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

struct CommonBase {
CommonBase() : CommonBase(0) {}

CommonBase(int val) : value(val) {}

const int value;
};

struct DerivedA : public virtual CommonBase {
void printValue() {
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/53814616/i-have-a-diamond-inheritance-hierarchy-virtual-x-%e2%86%92-a-b-%e2%86%92-y-%e2%86%92-z-why-does-z-n[/url]
Ответить

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

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

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

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

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