如何处理多级多路径继承情况(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的元素,也可以从G访问D的元素,使用C中的作用域解析操作符,但是我如何更进一步,从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”的无效使用“。
什么是正确的方式来实现这一点,并访问比这更高的元素?或者有什么方式可以做到这一点?
1条答案
按热度按时间pzfprimi1#
不确定如何通过访问器实现这一点,但逐层转换类型是可行的。