本地定义的类中的私有范围

时间:2016-03-09 07:49:41

标签: c++

这是一个展示我问题的小例子:

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->时不会列出它们。

1 个答案:

答案 0 :(得分:5)

代码有效。

N4140 [class.access] / 2:

  

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