MSDN 认为匿名结构在C ++中是非标准的:
Microsoft C扩展允许您在其他结构中声明结构变量而无需为其命名。这些嵌套结构称为匿名结构。C ++不允许匿名结构。
您可以访问匿名结构的成员,就像它们是包含结构中的成员一样。
有人告诉我,此功能不一定与仅创建未命名的结构相同,但我看不到标准措辞上的区别。
C ++ 11说:
[C++11: 9/1]:[..]一个类说明符,其类头省略了类头名,它定义了一个未命名的类。
并为缺少名称的类型定义提供完整的语法构造。
C ++ 03缺少这种明确的措辞,但类似地指出identifier类型定义中的in是可选的,并在9.4.2/5和中引用“未命名的类” 3.5/4。
那么MSDN是错误的,这些东西都是完全标准的吗?
还是在“未命名的结构/类”和用作成员的相同对象之间缺少一些微妙之处,以防止它们被此C ++ 03 / C ++ 11功能覆盖?
我是否缺少“未命名结构”和“匿名结构”之间的根本区别?在我看来,它们看起来像同义词。
ibeautiful
相关分类