首页 > 解决方案 > 是否存在表达式 `ab::c` 有意义的上下文?

问题描述

在 C++ 中考虑语法规则:

member-access-expression: LHS member-access-operator RHS
(op is .)

LHS=unqualifiedid-expression例如引用实例变量。
RHS=qualified id-expression(至少有一个嵌套标识符)

例子:a.b::c

如果它可以通过语义检查,那会是什么情况?

以下实验:

struct B{};

struct A
{
    B b;
};

int main()
{
    A a;
    a.b::c;
}

返回

'b' is not a class, namespace, or enumeration
a.b::c;
  ^

演示

这往往向我暗示,在成员访问权上不可能有任何合格 ID 的法律案例。

标签: c++

解决方案


一个非常简单的例子是如果你想调用父类的成员函数:

struct A {
    void f();
};

struct B: A {
    void f();
};

B b;
b.A::f();

推荐阅读