warning C4250: “MyClassD”: 通过域控制继承“MyClassC::MyClassC::MyMethod”

简介: warning C4250: “MyClassD”: 通过域控制继承“MyClassC::MyClassC::MyMethod”

warning C4250: “MyClassD”: 通过域控制继承“MyClassC::MyClassC::MyMethod”

菱形继承的警告,如下代码所示:


#include <stdio.h>

#include <string>

class MyClassA

{

public:

       virtual void MyMethod() = 0;

};

class MyClassB : virtual public MyClassA

{

};

class MyClassC : virtual public MyClassA

{

public:

       virtual void MyMethod()

        {

                  printf("Hello, World!\n");

        }

};

class MyClassD : virtual public MyClassB, virtual public MyClassC

{

public:

};

int main(int argc, char* argv[])

{

        MyClassD myClassD;

        myClassD.MyMethod();

        return 0;

}


[问题如下]


会报如下两个错误:


1>e:\e\c++\2012年12月\staticobjectdemo\staticobjectdemo\staticobjectdemo.cpp(49): warning C4250: “MyClassD”:通过域控制继承“MyClassC::MyClassC::MyMethod”


1>e:\e\c++\2012年12月\staticobjectdemo\staticobjectdemo\staticobjectdemo.cpp(40) : 参见“MyClassC:: MyMethod”的声明


查了下,没有更好的消除解决的方法,笔者认为这是由于菱形继承的特征性所决定的。


解决方案:


一般下可以通过以下方法消除警告!


#pragma warning(push)


#pragma warning(disable:4250) //显然此处的警告号为4250,其他的警告换相对应的编号即可。


……….           //此处加上对应的语句,注意一定要保证弹出警告的语句在diable:4250后,在pop前!


#pragma warning(pop)


扩展:


【msdn】#pragma warning含义——允许选择性的更改编译警告消息的行为。


使用形式如下:


#pragma warning( warning-specifier : warning-number-list [; warning-specifier : warning-number-list...] )


#pragma warning( push[ ,n ] )


#pragma warning( pop )


warning-specifier警告标识符如下:


Warning-specifier


含义


1, 2, 3, 4


应用于给定指定警告的级别,也用来使指定的缺省的警告关闭。


default


重置警告行为为其缺省值,也能用于将缺省的警告关闭。这个警告缺省的产生。


disable


不再弹出指定编号的的警告消息。用法:#pragma warning(disable:4250)


error


把指定的警告消息报告称为错误(Error)。


once


仅显示指定的警告消息一次。


suppress



把pragma的当前状态放置入栈,使得下一行的指定的警告不起作用,然后弹出警告栈,重置pragma状态。你只能对每一个suppress指示器指定一次警告,不能指定多个并且,suppress仅支持C6000的警告(代码分析警告),该警告可通过编译选项使其有效。


相关文章
|
自然语言处理 安全 C++
【C++ 格式化输出 】C++20 现代C++格式化:拥抱std--format简化你的代码
【C++ 格式化输出 】C++20 现代C++格式化:拥抱std--format简化你的代码
9551 4
QT QTreeWidget 实现模糊查询和多选的勾选状态
#QT QTreeWidget 实现模糊查询和勾选状态 本文的主要代码基本都是总结2篇博客实现了模糊查询模糊查询和勾选状态QTreeWidget实现勾选基本上所有的操作都是递归操作,个人测试了性能,如果1w项左右的数据时,没啥问题,如果有几w,那么勾选所有的,效率很慢,需要几秒钟,大家可以测试,不废话了,直接上代码:如果有啥不懂的,可以在留言,会很详细的给出解释的
485 0
|
监控 vr&ar 异构计算
实时云渲染解决UE像素流送无法进行二次开发的问题
本文介绍LarkXR实时云渲染平台为UE数字孪生提供的产品化功能,解决UE像素流送无法二次开发的问题。LarkXR实时云渲染平台支持集群部署,满足大并发需求,具备资源监控、客户端异常监控及PaaS管理功能,可兼容多种程序应用,包括3D共享、2D普通共享和WebGL方案。同时,平台优化大场景易用性,提供预启动应用和鸟瞰模式,并实现多终端自适应,支持主流浏览器与移动端操作,还涵盖VR/AR等MR终端支持。
实时云渲染解决UE像素流送无法进行二次开发的问题
|
存储 算法 编译器
【C++ 引用 】C++深度解析:引用成员变量的初始化及其在模板编程中的应用(一)
【C++ 引用 】C++深度解析:引用成员变量的初始化及其在模板编程中的应用
1819 0
|
数据安全/隐私保护
DT AES 加密解密 / UE 插件说明
DT AES 加密解密 / UE 插件说明
395 0
|
计算机视觉
使用QT显示OpenCV读取的图片
使用QT显示OpenCV读取的图片
335 1
|
存储 缓存 编译器
探秘C++中的神奇组合:std--pair的魅力之旅
探秘C++中的神奇组合:std--pair的魅力之旅
923 1
探秘C++中的神奇组合:std--pair的魅力之旅
Echarts实战案例代码(24):柱图数据顶部显示图片的解决方案
Echarts实战案例代码(24):柱图数据顶部显示图片的解决方案
642 0
Echarts实战案例代码(24):柱图数据顶部显示图片的解决方案
|
Linux
Linux安装bind9搭建自己的域名服务器
Linux安装bind9搭建自己的域名服务器
562 0

热门文章

最新文章