Можно ли обойтись без виртуального наследования?

от автора

У меня есть ромбовидное наследование интерфейсов: общий интерфейс IReadableDataset виртуально наследуется двумя другими: IEditableDataset и IStatisticalDataset. В свою очередь, есть реализация CDatasetImpl, которая реализует IStatisticalDataset и IEditableDataset.

Можно ли обойтись без виртуального наследования? Например, с помощью какого-то хитрого трюка с шаблонами?

class IReadableDataset { public:     virtual void SayReadableDataset() const = 0; };  class IEditableDataset: virtual public IReadableDataset { public:     virtual void SayEditableDataset() const = 0; };  class IStatisticalDataset: virtual public IReadableDataset { public:     virtual void SayStatisticalDataset() const = 0; }  class CDatasetImpl: public IEditableDataset, public IStatisticalDataset { public:     virtual void SayReadableDataset() const;     virtual void SayEditableDataset() const;     virtual void SayStatisticalDataset() const; };  

ссылка на оригинал статьи http://habrahabr.ru/post/166995/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *