【发布时间】:2019-09-10 13:42:13
【问题描述】:
在多个派生类中,其基类继承自同一个基类,并且两个基类都定义了与其基类中的一个同名的成员,如何通过不同的路径访问该成员?
标题很长,这里有一个插图。
struct A{int i;};
struct B1:A{int i;};//non virtual
struct B2:A{int i;};//non vitual
struct C:B1,B2{};
现在如何访问A 中的i 或B1 中的i 或B1 中的B1 对象中的i?
为了更清楚,c.i 当然是模棱两可的,其中c 是C。但是c.A::i也是模棱两可的,有两种可行的路径:
C -> B1 -> A
C -> B2 -> A
我如何指定使用一个?
【问题讨论】:
-
c.B2::A::i似乎适用于 MSVC,但不适用于 GCC 或 Clang。 -
c.B1::i和c.B2::i还是我错过了什么? -
@SergeyA 在
B1和B2中有名为i的成员。 -
@user 是的。但是您仍然可以独立访问它们。为什么我的建议对你不起作用?
-
@SergeyA 您正在访问
B1或B2中的成员i,而我想访问A中的i。
标签: c++ inheritance scope multiple-inheritance