小编nem*_*nem的帖子

在c ++中没有虚函数的多重继承

我遇到了钻石问题,并为一个钻石找到了不同案例的不同解决方案.但是,我无法找到"链式"钻石的解决方案.

根据结构:是的,我希望每次都有多个基类,因此虚拟继承不是解决方案(它甚至称为菱形?).我还想避免钻石每个中间层的get/set-functions.

p   p
|   |
k   k
 \ /
  s

class parent { int val; };
class kid1 : public parent {};
class kid2 : public parent {};
class school : public kid1, public kid2 {};
Run Code Online (Sandbox Code Playgroud)

在父类中访问val现在可以如下工作:

school* s = new school;
s->kid1::val=1; // works
Run Code Online (Sandbox Code Playgroud)

但是下一个"链式"钻石呢:

p   p   p   p
|   |   |   |
k   k   k   k
 \ /     \ /
  s       s
  |       |
  c       c
    \   /
      w

class country1 : public school {};
class country2 …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance diamond-problem

11
推荐指数
1
解决办法
531
查看次数

标签 统计

c++ ×1

diamond-problem ×1

inheritance ×1