本地定义的类中的专用范围
Private scope in locally-defined class
这里有一个小例子来演示我的问题:
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:
类的成员还可以访问该类有权访问的所有名称。成员的本地类 函数可以访问成员函数本身可以访问的相同名称。
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么在全局范围内使用"extern int a"似乎不行?
- 尝试通过多个向量访问变量时,向量下标超出范围
- 调用专用模板时出错"no matching function for call to [...]"
- 错误:未在此范围内声明'reverse'
- 正在将指针转换为范围
- 使用std::transform将一个范围的元素添加到另一个范围中
- 模板专用化(按容器):value_type
- 在基于范围的for循环中使用结构化绑定声明
- 如何计算数据类型的范围,例如int
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 具有公共范围与专用范围的默认值的C++的不同行为
- GCC 和非命名空间范围内的显式专用化
- 专用地图值的基于范围的 for 循环
- C++模板专用化中的声明范围
- 非命名空间范围内的显式专用化不会在 GCC 中编译
- 本地定义的类中的专用范围
- 类范围内的类模板专用化
- C++专用函数-不在此范围内错误
- 模板类中模板方法的基于整数范围的专用化