Visual Studio Compiler-Warnung C4250 ('class1' : erbt 'class2::member' über Dominanz)

Der folgende code erzeugt Warnung C4250. Meine Frage ist, was ist die beste Lösung?

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
}

Laut dem was ich gelesen habe sollte es möglich sein, dies zu tun:

class D : public B, public C
{
  using B::func1();
}

Aber das macht eigentlich nichts. Die Art und Weise hab ich momentan gelöst ist:

class D : public B, public C
{
  virtual void func1() { B::func1(); }
}

Was ist jeder Blick auf dieses?

  • Der code im ersten block nicht kompilieren und nachdem es geändert, um es zu kompilieren generiert wird nicht C4250.
InformationsquelleAutor Mark Ingram | 2009-01-22
Schreibe einen Kommentar