如何在枚举中指定数字

时间:2013-09-26 12:23:57

标签: c++ c++11 strongly-typed-enum

很抱歉,如果问题可能非常愚蠢:我有一个枚举,枚举中包含的名称必须是数字:

enum class EE
{
    ZERO,
    ONE,
    TWO,
    // ...
}

enum class EE2
{
    _0,
    _1,
    _2,
    // and so on ...
};

如果我记得很清楚,名字前的底线必须保留给实施。但是哪个是在枚举中分配数字的首选方法?

让我们有一个更具体的例子: 我可以写一些例子:

enum JoysticButton
{
    BUTTON_1,
    BUTTON_2,
    // AND SO ON
};

但要使用enum我必须写:

if ( k == JoysticButton::BUTTON_1 )

这非常冗长。或

enum JoysticButton
{
    _1,
    _2,
    // AND SO ON
};

if ( k == JoysticButton::_1 )

但第二种选择不太清楚

4 个答案:

答案 0 :(得分:2)

只有后跟大写字母或其他下划线的下划线保留用于实施,因此您可以自由使用_1_2

答案 1 :(得分:2)

为什么首先使用枚举类?

在这种情况下,我认为一个普通的枚举是最清晰的:

enum JoysticButton
{
    JoysticButton1,
    JoysticButton2,
    // ...
};

if ( k == JoysticButton1 ) ...

答案 2 :(得分:1)

  

但是哪个是在枚举中分隔数字的首选方法?

首选方法是具体,并尽可能清楚地命名枚举及其值。这一切都取决于枚举所代表的含义。

例如,如果数字代表一个版本,那么像这样(btw EE是一个非常糟糕的通用名称):

enum class EE
{
    v_1,
    v_1_1,
    v_2,
    v_3,
    // ...
};

答案 3 :(得分:0)

默认的枚举类型是int。你可以做到这一点,我相信这就是你所要求的。

enum class EE
{
    ONE = 1,
    TWO = 2,
    // ...
}