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
|