下面的示例代码private修饰符编译在Visual C++就好:C++忽视嵌套匿名结构
class Test {
private:
struct {
struct {
int privateData;
};
};
};
int main(int, char **)
{
Test test;
test.privateData = 0;
return 0;
}
但是,为什么?我期望编译器错误,因为privateData
成员应该无法访问函数主,因为它应该是private
像它的容器的容器。 我知道无名结构不是官方C++的一部分,但是这个设计是asinine。
顺便说一句,我也试图改变private
为protected
和struct
到union
:它看起来像编译器拒绝兑付匿名结构和联合嵌套在另一个匿名结构或联合内部的访问修饰符。
有人可以解释这个功能吗?
这听起来像是在_VS2005sp1_中修复的错误,您使用的是哪个版本?请记住,_anonymous structs_不是一个标准的_C++ _功能... –
nope,我正在使用VS 2012 –
@ K-ballo gcc也编译这个... –