Возможно ли преобразование типа int в enum? - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть ситуация с использованием языка c ++, где я получил целочисленные значения от 1 до 7 для ввода в метод для рабочих дней. Как я могу легко преобразовать тип класса enum в целые числа, используя staric_cast, но преобразование целого числа в enum представляет собой небольшую проблему. Возник вопрос, возможно ли преобразовать число в тип перечисления? Потому что в другом методе, который сгенерировал целое число, пришлось бы вызывать основанный на вводе дня класс на основе ввода для обновления дня недели. Этот метод обновления принимает только перечисляемый класс типа I.e рабочий день класса enum { Понедельник = 1, , , Воскресенье } Метод недействителен updateWeekday (день недели e). Кто-нибудь может помочь с этим, пожалуйста?

1 Ответ

0 голосов
/ 05 ноября 2018

Да, вы можете преобразовать оба способа: int в enum class и enum class в int . Этот пример должен быть понятен:

enum class Color{Red = 1, Yellow = 2, Green = 3, Blue = 4};
std::cout << static_cast<int>(Color::Green) << std::endl; // 3
// more flexible static_cast - See Tony's comment below
std::cout << static_cast<std::underlying_type_t<Color>>(Color::Green) << std::endl; // 3
std::cout << (Color::Green == static_cast<Color>(3)) << std::endl; // 1
std::cout << (Color::Green == static_cast<Color>(2)) << std::endl; // 0

Вы можете попробовать это сами здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...