在 C++11 中,我试图通过以下方式从嵌套类访问封闭类的成员变量:
struct Enclosing {
int a;
struct Nested {
int f() {
return a;
}
};
};
即使使用带有 -std=c++11 的 g++4.7.2 也无法编译,会产生以下形式的错误消息:
error: invalid use of non-static data member 'Enclosing::a'
据我了解,C++11 将嵌套类视为该类的成员,因此据说嵌套类可以访问封闭类的所有其他成员。我做错什么了吗?提前致谢。
更新:
虽然我的问题似乎在下面有答案,但我不相信这会被标记为重复。
在发布问题之前进行了大量搜索之后,我知道在 C++11 标准之前关于嵌套类和封闭类之间关系的讨论。
像这样的先前相关讨论引用了 C++11 中的一些“更新”,例如C++ 嵌套类可访问性
但至少从我读过的答案来看,C++11 在这个问题上与旧版本“不同”的程度还不是很清楚。
从技术上讲,我的问题的解决方案存在于较旧的线程中,例如 Nested class' access to enclosure class' private data members,必须指出这一事实,但它让我看起来很愚蠢。但是我没有得到任何将 C++11 置于上下文中的答案。至少,我认为我的问题不能被公平地视为 C++11 标准之前提出的问题的“重复”。