Le code suivant génère l'avertissement C4250. Ma question est la suivante: quelle est la meilleure solution?Avertissement du compilateur Visual Studio C4250 ('class1': hérite 'class2 :: member' via la dominance)
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
}
D'après ce que je l'ai lu, il devrait être possible de le faire:
class D : public B, public C
{
using B::func1();
}
Mais, cela ne fait quoi que ce soit. La façon dont je l'ai actuellement résolu est la suivante:
class D : public B, public C
{
virtual void func1() { B::func1(); }
}
Qu'est-ce que tout le monde voit à ce sujet?
Le code dans le premier bloc ne compile pas et après l'avoir modifié pour compiler il ne génère pas C4250. – quamrana