虽然用枚举名称限定枚举值在C++03中是无效的,但据我所知,它在C++11中是有效的。尽管如此,MSVC10仍会针对以下内容生成警告C4482:enumE{A,B};inti=E::A;//warningC4482(butvalidC++11?)由于我们的大部分代码都使用了C++11功能(尤其是lambda),因此禁用此警告似乎是安全的。我认为该代码是有效的C++11对吗?注意:我没有编写有问题的代码,我宁愿不经历并更改每一次出现的代码。编辑:添加了一些相关链接。MSDNpageforthewarning.Anotherquestionaboutthewarning.问题和答案似乎都引
我在我的一个类的方法中使用枚举的完全限定名称。但我收到编译器警告,上面写着“警告C4482:使用了非标准扩展:限定名称中使用了枚举'Foo'”。在C++中,我们是否需要使用没有限定名的枚举?但是IMO,这看起来很难看。有什么想法吗? 最佳答案 是的,枚举不会创建新的“命名空间”,枚举中的值在周围范围内直接可用。所以你得到:enumsample{SAMPLE_ONE=1,SAMPLE_TWO=2};intmain(){std::cout 关于c++-在类型中使用枚举-编译器警告C4482C
我在我的一个类的方法中使用枚举的完全限定名称。但我收到编译器警告,上面写着“警告C4482:使用了非标准扩展:限定名称中使用了枚举'Foo'”。在C++中,我们是否需要使用没有限定名的枚举?但是IMO,这看起来很难看。有什么想法吗? 最佳答案 是的,枚举不会创建新的“命名空间”,枚举中的值在周围范围内直接可用。所以你得到:enumsample{SAMPLE_ONE=1,SAMPLE_TWO=2};intmain(){std::cout 关于c++-在类型中使用枚举-编译器警告C4482C