Множественное наследование

Нужен класс, который наследует от двух классов, имеющих общего предка. Но что бы этот общий предок был в одном экземпляре.

Что бы так было, по правилам, для этих двух классов должно использоваться виртуальное наследование. Т.е. наследование от виртуального базового класса.

Вопрос: если эти два класса наследуются от базового невиртуально, то можно ли как-то получить один экземпляр самого базового класса в классе, который наследуется от этих двух? Ни базовый, ни два имеющихся потомка изменять нельзя. Допустим они берутся из библиотеки и исходники недоступны.

class A { ... }

class B : public A { ... }  // не virtual public!
class C : public A { ... }  // не virtual public!
-----------

class D : public B, public C { ... }  // здесь два экземпляра A ((

Не получится. Да и зачем такое нужно? Возможно, есть способ решить задачу без множественного наследования.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.