【发布时间】:2018-03-14 01:36:54
【问题描述】:
下面是我的类层次结构。
所有Ixxxx 类都是接口(没有成员数据的抽象类)。
所有箭头代表继承。
颜色只是为了提供更好的视觉效果。
在使用这些类的代码中的某处,我必须传递一个 Track*,其中应该是 IConnectableTrack*,我得到以下编译错误:
error: ‘IConnectableTrack’ is an ambiguous base of ‘Track’
我知道这是多重继承的问题,但我尝试了virtual 继承的多种组合,但无济于事。
特别是,我认为虚拟化红色接口之间的继承和绿色类之间的继承(即所有紫色箭头)就足够了,但这并不能解决问题。
这里的正确结构是什么?
编辑:这个问题与提到的问题不同,因为它包含纯抽象类,这与引用的特定错误消息有关。
【问题讨论】:
-
ConnectableTrack 应该已经是“虚拟 IConnectableTrack”了。
-
@Charles 您提到的问题仅涉及会员数据。这里的问题出现在纯抽象类。
-
@Silverspur 我知道;但是,
ConnectableTrack仍然有钻石继承,所以我建议这样做。
标签: c++ inheritance multiple-inheritance virtual-inheritance