如何在枚举中指定数字

How to specify a number in an enum

本文关键字:数字 枚举      更新时间:2023-10-16

对不起,如果这个问题可能很愚蠢:我有一个枚举,枚举中包含的名称必须是一个数字:

enum class EE
{
    ZERO,
    ONE,
    TWO,
    // ...
}
enum class EE2
{
    _0,
    _1,
    _2,
    // and so on ...
};

如果我记得不错的话,名字前面的下层必须保留给实施。但是,在枚举中分隔数字的首选方法是哪种方法?

让我们举一个更具体的例子:我可以写例如:

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

但是要使用枚举,我必须写:

if ( k == JoysticButton::BUTTON_1 )

这非常冗长。或者。

enum JoysticButton
{
    _1,
    _2,
    // AND SO ON
};
if ( k == JoysticButton::_1 )

但第二种选择不太清楚

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

为什么首先使用枚举类?

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

enum JoysticButton
{
    JoysticButton1,
    JoysticButton2,
    // ...
};
if ( k == JoysticButton1 ) ...

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

首选方法是具体,并尽可能清楚地命名枚举及其值。这完全取决于枚举代表什么。

例如,如果数字代表一个版本,那么像这样的东西(顺便说一句,EE是一个糟糕的通用名称):

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

默认枚举类型为 int。你可以这样做,我相信这就是你要问的。

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