本地定义的类中的专用范围

Private scope in locally-defined class

本文关键字:专用 范围 定义      更新时间:2023-10-16

这里有一个小例子来演示我的问题:

class Foo {
private:
  int x;
  void y() {
    class Bar {
    public:
      Bar(Foo* foo) {
        foo->x = 3;
      }
    };
    Bar bar(this);
  }
};

Foo 和在其成员函数中定义的类y尝试访问其私有成员x。这是允许的吗?

Visual Studio 2013 可以编译它,但 IntelliSense 似乎认为无法访问私有成员,并且在嵌入式类方法中键入foo->时不会列出它们。

代码有效。

N4140 [类访问]/2:

的成员还可以访问该类有权访问的所有名称。成员的本地类 函数可以访问成员函数本身可以访问的相同名称。