相关疑难解决方法(0)

Visual Studio编译器警告C4250('class1':通过优势继承'class2 :: member')

以下代码生成警告C4250.我的问题是,什么是最好的解决方案?

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
}
Run Code Online (Sandbox Code Playgroud)

根据我所读到的,应该可以这样做:

class D : public B, public C
{
  using B::func1();
}
Run Code Online (Sandbox Code Playgroud)

但是,这实际上并没有做任何事情.我目前解决它的方式是:

class D : public B, public C
{
  virtual void func1() { B::func1(); }
}
Run Code Online (Sandbox Code Playgroud)

大家对此有什么看法?

c++ warnings multiple-inheritance visual-studio-2008

11
推荐指数
2
解决办法
9097
查看次数