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