Сразу прошу прощения если этот вопрос уже задавался.
Объявляем интерфейс IA
class IA
{
public:
virtual void f() = 0;
};
Объявляем расширенную версию интерфейса IA — интерфейс IB
class IB : public virtual IA
{
public:
virtual void g() = 0;
};
Реализуем в классе A интерфейс IA
class A : public virtual IA
{
public:
virtual void f()
{
printf("A::f");
}
};
А теперь хотим реализовать интерфейс IB в классе B, воспользовавшись уже имеющейся реализацией f из A
class B : public IB, public A
{
public:
virtual void g()
{
printf("B::g");
}
};
На все это счастие .NET 2003 выдает предупреждение:
warning C4250: 'B' : inherits 'A::A::f' via dominance see declaration of 'A::f'
Хочется от него избавиться. Делегирование не предлагать