c++ - 是否存在表达式 `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 的法律案例。
解决方案
一个非常简单的例子是如果你想调用父类的成员函数:
struct A {
void f();
};
struct B: A {
void f();
};
B b;
b.A::f();
推荐阅读
- node.js - 无法使用 puppeteer 访问动态页面
- python - 有条件的最小熊猫
- docker - 创建一个新版本的容器并提交 do docker hub
- apache - 如何在 httpd.conf 中阻止 IP 地址块
- eclipse - 在 Ubuntu 18.04 上启动 Eclipse 时遇到问题,我一直遇到这个问题
- reactjs - 使用 Yup 进行条件表单验证
- java - 使用扫描仪输入时如何写出表格?
- qbasic - 使用 QBASIC 为 android 开发?
- sql - 当窗口函数遇到空值时,Redshift 列别名不起作用?还有谁?
- javascript - 在 UI 上排序数据和渲染不使用反应钩子