На коде аналогичном этому (классический diamond inheritance) получаю такой warning:
warning C4250: 'E' : inherits 'E::E::foo' via dominance
#include <iostream>
using namespace std;
class A {
public:
virtual int foo() = 0;
};
class B : virtual public A {
public:
virtual int foo() {
return 3;
}
};
class C : virtual public A {};
class E : public B, public C {}; // C4250
int main() {
E eObject;
cout << eObject.operator int() << endl;
}
как бы от него избавится? И еще смущает имя 'E::E::foo' ...
От virtual inheritance отказываться не желательно...