加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – Visual Studio编译器警告C4250(‘class1’:通过支配继承’

发布时间:2020-12-16 03:11:48 所属栏目:百科 来源:网络整理
导读:以下代码生成警告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} 根据我所看到的
以下代码生成警告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
}

根据我所看到的,应该可以做到这一点:

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

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

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

大家对此有何看法?

解决方法

你尝试从A类继承公共虚拟机吗?我认为应该解决它.
class B :public virtual A;
    class C :public virtual A;
    class D : public virtual B,public virtual C;

虚拟继承假设解决了歧义.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读