Здравствуйте, _Paul, Вы писали:
_P>>>Тебе поможет виртуальное наследование:
NBN>>Имхо здесь явно проблемы в архитектуре. К сожалению не готов предложить лучшую...
_P>Паттерн Bridge?
Не знаю

я не вполне уверен, что правильно понимаю задачу. Возможно лучше было бы решить так:
// interface
class IPort
{
virtual void PortFunc() = 0;
};
class IPortA : public IPort
{
virtual void PortFuncA() = 0;
};
class IPortB : public IPort
{
virtual void PortFuncB() = 0;
};
// implementation
template<class TInterface>
class Port
{
void PortFunc() {}
};
template<class TInterface>
class PortA : public Port<TInterface>
{
void PortFuncA() {}
};
template<class TInterface>
class PortB : public Port<TInterface>
{
void PortFuncB() {}
};
IPortA* CreatePortA() { return new PortA<IPortA>; }
IPortB* CreatePortB() { return new PortB<IPortB>; }