以下代碼會生成警告C4250。我的問題是,最好的解決方案是什麼?Visual Studio編譯器警告C4250('class1':通過優勢繼承'class2 :: member')
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
}
據我讀過應該有可能做到這一點:
class D : public B, public C
{
using B::func1();
}
但是,這實際上並沒有做任何事情。我目前解決它的方式是:
class D : public B, public C
{
virtual void func1() { B::func1(); }
}
大家對此的看法是什麼?
第一個塊中的代碼不會編譯,並且在將其更改爲編譯後,它不會生成C4250。 – quamrana 2010-02-03 08:53:53