以下示例代码在 Visual C++ 中编译得很好:
class Test {
private:
struct {
struct {
int privateData;
};
};
};
int main(int, char **)
{
Test test;
test.privateData = 0;
return 0;
}
但为什么?我预计会出现编译器错误,因为privateData
函数 main 应该无法访问该成员,因为它应该private
像它的容器的容器一样。我知道无名结构不是官方 C++ 的一部分,但这种设计是愚蠢的。
顺便说一句,我还尝试更改private
intoprotected
和struct
into union
:看起来编译器拒绝尊重嵌套在另一个匿名结构或联合中的匿名结构和联合的访问修饰符。
有人可以解释这个功能吗?