Не раз слышал мнения, что проблема ромба при множественном наследовании - надуманная и в принципе нет никаких ограничений на ее решение, введя правило, по которому первый наследник всегда побеждает. Ну т.е. при
class A
{
virtual void f1();
}
class B: public A
{
virtual void f1();
}
class C: public B
{
virtual void f1();
}
class D: public B, public C
{
virtual void f1(); // B::f1() wins
}
Лично мое имхо - "ромб" - это следствие плохой архитектуры... А вы шо скажете?