Возможно ли преобразование типа int в enum?

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

1

Решение

Да, вы можете конвертировать в обе стороны: int в 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

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

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]