Приведение перечисления к int в C++
Значение enum class нельзя подставить туда,
где ждут обычный int: это отдельный тип.
Номер читают записью static_cast<int> вокруг
значения.
Запись static_cast<int>(Level::high) дает
целое с тем числом, которое задано в объявлении.
Запишем перечисление с явными кодами и выведем
число для high:
#include <iostream>
enum class Level : int { low = 1, high = 5 };
int main() {
std::cout << static_cast<int>(Level::high) << "\n";
return 0;
}
Тот же прием сохраняет код в переменную перед выводом или сравнением с обычным числом. Запишем скидку и выведем процент:
#include <iostream>
enum class Discount : int {
none = 0,
sale = 10,
mega = 30
};
int main() {
Discount d = Discount::mega;
int percent = static_cast<int>(d);
std::cout << percent << "\n";
return 0;
}
Объявите enum class Traffic с типом int:
city - 60, road - 90,
highway - 110.
Выведите лимит для Traffic::road как целое.
Объявите enum class HttpStatus с типом int
и кодом 200 для ok.
Сохраните HttpStatus::ok в переменную,
получите из нее int через операцию
static_cast и выведите результат.