Я считаю, что явная посмотреть таблица лучше всего работает, как для преобразования из перечисления в текст и текста в ENUM:
enum Language_Enum
{
LANGUAGE_FIRST = 0,
LANGUAGE_GERMAN = LANGUAGE_FIRST,
LANGUAGE_ENGLISH,
LANGUAGE_HOPI,
LANGUAGE_WELSH,
LANGUAGE_TEXAN,
LANGUAGE_DUTCH,
LANGUAGE_LAST
};
struct Language_Entry
{
Language_Enum id;
const char * text;
};
const Language Entry language_table[] =
{
{LANGUAGE_GERMAN, "German"},
{LANGUAGE_HOPI, "Hopi"},
{LANGUAGE_DUTCH, "Dutch"},
// ...
};
const unsigned int language_table_size =
sizeof(language_table)/sizeof(language_table[0]);
Задания enum
вместе с текстом позволяет изменять порядок перечисления с минимальным эффектом на поисковую систему.
The LANGUAGE_FIRST
и LANGUAGE_LAST
идентификаторов позволяют итерации перечисления:
Language_Enum l;
for (l = LANGUAGE_FIRST; l < LANGUAGE_LAST; ++l)
{
// ...
}
Если вы используете индексы, почему не 'станд :: array' или' станд :: VECTOR'? Если вы хотите, чтобы ваши индексы были значимыми (а не просто целыми целыми числами), то «std :: map» является хорошим кандидатом. – chris
Можете ли вы PLZ кодифицировать его для меня, как им не знакомы с синтаксисом C++ –
Я просто хочу получить следующее значение перечисления, если я предоставляю предыдущий. –