我正在尝试实现一个实现许多接口的相当大的对象。其中一些接口是纯虚拟的。我可能在钻石继承上有问题。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' : inherits 'class2::member' via dominance)的副本,我已经尝试了那里提出的解决方案。
注2:我也可以发送类图,但它比这复杂一点。
编辑: 完整警告如下:
warning C4250: 'gge::resource::ImageResource' : inherits
'gge::graphics::ImageTexture::gge::graphics::ImageTexture::drawin'
via dominance
gge::resource::ImageResource
图中是 Big,gge::graphics::ImageTexture
是 D,drawin 是我收到警告的六种方法之一。