Уважаемые читатели habrahabr,
помогите мне, пожалуйста, со следующей проблемой.
Пусть у нас есть два интерфейса:
class IA
{
public:
virtual int FuncA() = 0;
};
class ISuperA : virtual public IA
{
public:
virtual int FuncSuperA() = 0;
};
Мы делаем какую-то реализацию для каждого из них:
class A1 : virtual public IA
{
public:
virtual int FuncA() { return 1; }
};
class AIncrement: virtual public ISuperA
{
public:
virtual int FuncSuperA() { return (FuncA() + 1); }
};
Потом создаем класс, являющегося наследником обоих реализаций интерфейсов:
class A1Increment: virtual public AIncrement, virtual public A1
{
};
int main()
{
A1Increment a;
cout << "test: " << a.FuncSuperA() << endl;
}
В этом случае при компиляции в Microsoft Visual Studio 2010 возникает следующий warning:
warning C4250: 'A1Increment': inherits 'A1::A1::FuncA' via dominance
Возникает вопрос: есть ли возможность избавиться от этого warningа?
Если при такой реализации это невозможно, то возможно ли использовать какую-нибудь другую форму наследования\интерфейса?