Извините, если вопрос может быть очень глупым: у меня есть enum, а имя, содержащееся в 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
};
Но чтобы использовать перечисление, я должен написать:
if ( k == JoysticButton::BUTTON_1 )
И это очень многословно. Или же.
enum JoysticButton
{
_1,
_2,
// AND SO ON
};
if ( k == JoysticButton::_1 )
Но вторая альтернатива менее ясна
Но какой предпочтительный способ отделить число внутри перечисления?
Предпочтительный способ — быть конкретным и назвать перечисление и его значения как можно более четко. Все зависит от того, что представляет enum.
Например, если число представляет версию, то что-то вроде этого (кстати, EE — ужасное родовое имя):
enum class EE
{
v_1,
v_1_1,
v_2,
v_3,
// ...
};
Для реализации зарезервированы только подчеркивания, за которыми следует заглавная буква или другое подчеркивание, так что вы можете свободно использовать _1
, _2
, так далее.
Зачем вообще использовать класс enum?
В этом случае простой старый enum является наиболее ясным, я думаю:
enum JoysticButton
{
JoysticButton1,
JoysticButton2,
// ...
};
if ( k == JoysticButton1 ) ...
Тип перечисления по умолчанию — int. Вы можете сделать это, я считаю, что это то, что вы спрашиваете.
enum class EE
{
ONE = 1,
TWO = 2,
// ...
}