Pat*_*ick 4 c++ enums visual-studio-2010
在回顾一些旧的代码时,我注意到以下两个使用enum的奇怪结构(两个不同的文件/类/命名空间,只是将它们放在一起):
enum FirstEnum
{
A_CHOICE
,ANOTHER_CHOICE=1
,YET_SOME_OTHER_CHOICE
};
enum SecondEnum
{
FIRST_CHOICE
,SECOND_CHOICE
,THIRD_CHOICE
,DEFAULT_CHOICE=SECOND_CHOICE
};
Run Code Online (Sandbox Code Playgroud)
我认为这两种结构都是错误的.
第一个为其中一个选项赋值,但不为其他选项赋值,这意味着如果添加新选项,事情可能会出错.
在第二种情况下,我们最终得到两个具有相同基础值的枚举元素.
有没有理由说C++标准允许这两种结构?
(使用Visual Studio 2010)
第一个为其中一个选项赋值,但不为其他选项赋值,这意味着如果添加新选项,事情可能会出错.
我不知道你的意思是"出错".它定义明确,如果你没有为枚举器指定一个值,它的值比前一个值多一个(或者如果它是第一个则为零).
在第二种情况下,我们最终得到两个具有相同基础值的枚举元素.
是的我们做到了.如果枚举应该是一组唯一值,但是(在C++中)它们不是,那将是错误的.
有没有理由说C++标准允许这两种结构?
因为,在C++中,枚举只是一种声明一组相关的,命名的常量值的方法.它并不试图限制它们可以采取的值.
归档时间: |
|
查看次数: |
3113 次 |
最近记录: |