Здравствуйте, 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();
};
Здравствуйте, agaf, Вы писали:
A>А вот не работает
Какой компилятор? Проверял на VS2003 — все ок