![]() |
1
35
看起来您想进行虚拟继承。这是否真的是个好主意是另一个问题,但下面是你如何做到的:
基本上,默认的非虚拟多重继承将包括 每个基类 在派生类中,并包含其所有方法。这就是为什么你有两个ABSBASE副本——并且你的方法使用不明确的原因是加载了两组方法,所以C++没有办法知道要访问哪一个副本! 虚拟继承将对虚拟基类的所有引用压缩为一个数据结构。这将使基类中的方法再次明确。但是,注意:如果两个中间类中有额外的数据,那么可能会有一些额外的运行时开销,以使代码能够找到共享的虚拟基类。 |
![]() |
2
1
您需要将继承声明为虚拟继承:
|
![]() |
3
1
这是可以做到的,尽管它让大多数人发抖。 您需要使用“虚拟继承”,其语法类似于
然后必须指定要使用的函数:
(用正确的语法更新) |
![]() |
4
0
你必须开始思考你想在这里建立什么样的模型。 公共继承只能用来建立“is a”关系的模型,例如狗是动物,正方形是形状等等。 看看Scott Meyer的书《有效C++》,一篇关于OO设计的各个方面应该被解释为什么的优秀论文。 编辑:我忘了说,虽然迄今为止提供的答案在技术上是正确的,但我认为它们中没有任何一个能解决您试图模拟的问题,这就是您问题的关键所在! 高温高压 干杯, 抢劫 |
![]() |
5
0
我在下面的链接中找到了一个简单的好例子。本文以一个计算矩形面积和周长的程序为例进行了说明。你可以查一下……干杯 多级继承是一种继承层次结构,其中一个派生类继承多个基类。多读… http://www.mobihackman.in/2013/09/multiple-inheritance-example.html |
![]() |
Fernando Chu · 一个变量有多个可能的类?[关闭] 6 月前 |
![]() |
Amaterastis · 基类接受子类和内部子类的模板参数 7 月前 |
![]() |
Rishab Negi · 这个关键字在抽象类中是如何工作的 7 月前 |
![]() |
dEmigOd · 类层次结构中的运算符重载解析 8 月前 |
![]() |
TableTopRug · 如何从Kotlin中的密封类继承? 8 月前 |
![]() |
hasdrubal · 抽象基类函数指针python 11 月前 |
|
Josh · 通过反思访问孩子的财产 1 年前 |