c++通过支配警告继承

C++ Inheritance via dominance warning

本文关键字:警告 继承 c++      更新时间:2023-10-16

我正在尝试实现一个实现许多接口的相当大的对象。其中一些接口是纯虚拟的。我可能在钻石继承方面有问题。Visual Studio报告了一个C4250 ('class1' : inherits 'class2::member' via dominance)的警告。首先,这些类实际上是继承的。下面是导致这个问题的部分类设计。

A        B        C
       /       /
      /       /
    AB       BC 
    |         |
    |        BC2
    |         |
             D: Implementation of B, C, BC, BC2
            /
        Big

在整个树中,只有D实现了虚方法,没有其他方法的定义。B的所有虚方法都列在警告中。如果重要,D是一个完整的类。

我读到这种情况发生在Boost序列化中,忽略警告是安全的。

我试图实现的方法有效吗?无视这个警告安全吗?

注释1:这不是Visual Studio编译器警告C4250的副本('class1':继承'class2::member'通过支配),我已经尝试了那里提出的解决方案。

注2:我也可以发送类图,但它比这更复杂一些。

编辑:

完整的警告如下:

warning C4250: 'gge::resource::ImageResource' : inherits 
'gge::graphics::ImageTexture::gge::graphics::ImageTexture::drawin' 
via dominance

gge::resource::ImageResource为Big in the drawing, gge::graphics::ImageTexture为D, draw是我得到警告的六种方法之一

一切都绝对有效。编译器允许对有效代码发出警告,这里没有问题。您可以尝试使用using声明使警告静音。如果这不起作用(可能是由于MSVC的错误),请使用pragma将其静音。