OOP中如何处理多级多路径继承?

问题描述 投票:0回答:1

如何处理多级多路径继承情况(C++ 中的 OOP)? 例如:

A
                
B       C
                    
D
                
E       F
                    
G

以上是给定的类,它们的层次结构可以理解为“A”是“B”和“C”的父级,“D”是“E”和“F”的父级。现在,“D”是“B”和“C”的孩子,同样“G”是“E”和“F”的孩子。

现在,如果我创建一个类 G 的变量,那么我知道我可以从 G 本身访问 E、F 的元素,也可以使用 C++ 中的范围解析运算符从 G 访问 D 的元素。但是我如何使用范围解析运算符从 G 本身获得更高的 B 或 C 甚至 A 的元素,或者如果有的话,说任何其他方式?

这是我用来实现这个的一些 C++ 代码 -

G obj;

obj.g = 1; // G's element
obj.e = 2; // E's element
obj.f = 3; // F's element

obj.E::d = 41; // Accessing D's element via E using scope resolution operator
obj.F::d = 42; // Accessing D's element via F using scope resolution operator

现在我如何从这里走得更高?

然后我尝试以类似的方式访问更高的元素 -

obj.E::D::b = 211; // First way I tried

obj.F.D::b = 212; // Second way I tried

第一个显示错误说明“'D'是'G'的不明确基数”,第二个显示错误说明“'F::F'的无效使用。

什么是正确的实现方式和访问比这更高的元素?或者有什么办法可以这样做吗?

c++ oop inheritance multiple-inheritance
1个回答
-1
投票

在C++编程中,不仅可以从基类派生类,还可以从派生类派生类。这种继承形式称为多级继承。

A级{ ………… }; B类:公共A { ………… }; C类:公共B { ………… };

© www.soinside.com 2019 - 2024. All rights reserved.