由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - C++继承问题
相关主题
相关话题的讨论汇总
话题: public话题: base话题: std话题: class
进入JobHunting版参与讨论
1 (共1页)
C***U
发帖数: 2406
1
class Base {
public:
int x;
};
class LevelOneA: public Base {
public:
void show() { std::cout << x << std::endl; }
};
class LevelOneB: public Base {
public:
void show() { std::cout << x << std::endl; }
};
class LevelTwo: public LevelOneA, public LevelOneB {
public:
};
这个是不是有diamond inheritance problem?
我在VS里面测试没问题。
那LevelTwo这个类里面有几个x啊?
p*1
发帖数: 104
2
不是,Diamond inheritance要用Virtual Base,你这个有2个Base
C***U
发帖数: 2406
3
那该怎么访问两个x啊?
ob.x分不清是哪个x啊
l*********8
发帖数: 4642
4
ob.LevelOneA::x
ob.LevelOneB::x

【在 C***U 的大作中提到】
: 那该怎么访问两个x啊?
: ob.x分不清是哪个x啊

C***U
发帖数: 2406
5
OK 谢谢
你能举个diamond inheritance的例子么?
谢谢

【在 l*********8 的大作中提到】
: ob.LevelOneA::x
: ob.LevelOneB::x

C***U
发帖数: 2406
6
我查了一下
我给的例子是diamond inheritance problem
只不过说用virtual inheritance能解决这个问题
谢谢

【在 p*1 的大作中提到】
: 不是,Diamond inheritance要用Virtual Base,你这个有2个Base
1 (共1页)
进入JobHunting版参与讨论
相关主题
相关话题的讨论汇总
话题: public话题: base话题: std话题: class