Это классический пример виртуального наследования в 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?
Или виртуальное наследование действительно лучший подход?
Я принимаю предложения о том, как сделать его более конкретным. Искали сеть и не нашли много на эту тему. Мне все еще интересно узнать больше ... – glampert
Или, если вы, ребята, думаете, что это лучше подходит [programers.stackexchange] (http://programmers.stackexchange.com/) ... – glampert
Поиск в Интернете для " алмазное наследование ", и вы увидите основную причину и несколько решений. –