4

Это классический пример виртуального наследования в C++ (копируется из cprogramming.com):Другие альтернативы виртуальному наследованию?

class storable 
{ 
public: 

    storable(const char*); 
    virtual void read(); 
    virtual void write(); 
    virtual ~storable(); 

private: 

    // some data...  
}; 

class transmitter : public virtual storable 
{ 
public: 
    void write(); 
    ... 
}; 

class receiver : public virtual storable 
{ 
public: 
    void read(); 
    ... 
}; 

class radio : public transmitter, public receiver 
{ 
public: 
    ... 
}; 

Я использовал такой подход, прежде чем на подобных иерархиях, однако, я был заинтересован в поиске, что другие альтернативы делают мы для этого конкретного примера. Как мы можем заменить виртуальное наследование в этом случае? Используя какую-то форму композиции? Mixins?

Или виртуальное наследование действительно лучший подход?

+0

Я принимаю предложения о том, как сделать его более конкретным. Искали сеть и не нашли много на эту тему. Мне все еще интересно узнать больше ... – glampert

+1

Или, если вы, ребята, думаете, что это лучше подходит [programers.stackexchange] (http://programmers.stackexchange.com/) ... – glampert

+1

Поиск в Интернете для " алмазное наследование ", и вы увидите основную причину и несколько решений. –

ответ