Re: множественное наследование
От: Аноним  
Дата: 21.06.07 17:49
Оценка:
Здравствуйте, agaf, Вы писали:

A>Есть два типа портов — PortA и PortB. У них есть как одинаковые методы, так и специфичные. Наружу модуля должны торчать только интерфейсы: IPortA и IPortB. Хочется реализовать это красиво с минимальным повторением кода.



//! Общий интерфейс для всех портов идет нафик :)
// если общих методов много, то определи их как макрос и включай в интерфейсы

//! Специфичный интерфейс порта А
class IPortA
{
  virtual void func() = 0;
  virtual void funcA() = 0;
};

//! Специфичный интерфейс порта Б
class IPortB : public IPort
{
  virtual void func() = 0;
  virtual void funcB() = 0;
};

class Port
{
  void funcImpl();
};

class PortA: public Port, public IPortA
{
  void func() { funcImpl(); }; // делегируем вызов предку
  void funcA();
};

class PortB: public Port, public IPortB
{
  void func() { funcImpl(); }; // делегируем вызов предку
  void funcB();
};
Re[3]: множественное наследование
От: _Paul Россия  
Дата: 21.06.07 22:31
Оценка:
Здравствуйте, agaf, Вы писали:

A>А вот не работает


Какой компилятор? Проверял на VS2003 — все ок
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.