Der folgende Code generiert die Warnung C4250. Meine Frage ist, was ist die beste Lösung dafür?Visual Studio Compilerwarnung C4250 ('class1': erbt 'class2 :: member' über Dominanz)
class A
{
virtual void func1();
}
class B : public A
{
}
class C : public A
{
virtual void func1();
}
class D : public B, public C
{
}
int main()
{
D d;
d.func1(); // Causes warning
}
Nach dem, was ich gelesen habe, sollte es möglich sein, dies zu tun:
class D : public B, public C
{
using B::func1();
}
Aber das ist eigentlich nichts tun. Die Art, wie ich es zur Zeit gelöst habe, ist:
class D : public B, public C
{
virtual void func1() { B::func1(); }
}
Was ist die Sicht von jedermann darauf?
Der Code im ersten Block wird nicht kompiliert, und nach dem Kompilieren wird C4250 nicht generiert. – quamrana