Страницы

Поиск по вопросам

вторник, 23 апреля 2019 г.

Получить значение по индексу в enum

Собственно есть enum:
enum DECK_COUNT { DECK_X1 = 1, DECK_X2 = DECK_X1 << 1, DECK_X3 = DECK_X2 << 1, DECK_X4 = DECK_X3 << 1 };
Есть ли возможность без лишних заморочек получить значение из перечисления по индексу?


Ответ

Добавьте enum'ы START и END - вот вам и индекс и границы цикла. Так делали в далёком прошлом.
И используйте enum class, enum - это пережитки прошлого.
enum class eShipType { START,
DESK_1, DESK_2, DESK_3, DESK_4,
END, }; eShipType getShipByIndex(const size_t index) { return (index >= static_cast(eShipType::START) && index <= static_cast(eShipType::END)) ? static_cast(static_cast(eShipType::START) + index) : throw ExpectionOutOfRange("eShipType with index " +std::to_string(index) ); }

Update: так же отмечу, что случаи когда enum'у нужны явные значения очень очень редко - и как вы уже догодались типы кораблей для игры морской бой - не тот случай.

Комментариев нет:

Отправить комментарий