Перечисления (enum) в C++ позволяют создавать наборы именованных констант, упрощая работу со множеством связанных значений. Рассмотрим создание, использование и преимущества перечислений.
Зачем нужны перечисления?
Перечисления создают упорядоченный список возможных вариантов параметра. Это удобно: весь список доступных значений находится в одном месте, используется для различных объектов и позволяет проводить проверки на соответствие.
Создание перечисления
Для создания используется ключевое слово enum (от англ. «enumeration»). Далее следует имя перечисления (например, Options) и фигурные скобки {}, внутри которых перечисляются варианты. Каждое значение — уникальный идентификатор (имя переменной) на английском языке без специальных символов. В конце — точка с запятой.
Пример:
enum Options { Open, Close, Wait, Delete };
Использование перечисления в структуре
Пример использования перечисления в структуре, описывающей файл:
struct File {
float weight;
std::string name;
Options options;
};
Options — перечисление, хранящее информацию о состоянии файла (открыт, закрыт и т.д.). Это удобнее, чем хранение состояния строкой, так как исключает ошибки ввода и предоставляет готовый набор значений.
Работа с перечислением
В функции main создадим объект структуры File и установим значение из перечисления для поля options:
int main() {
File myFile;
myFile.weight = 1.5f;
myFile.name = "test";
myFile.options = Options::Close; // Доступ к элементу перечисления через ::
return 0;
}
Обратите внимание на оператор ::, используемый для доступа к элементам.
Вывод значений перечисления
При выводе значения перечисления на экран отображается числовое значение. По умолчанию, первому элементу присваивается значение 0, последующим — значения увеличиваются на 1.
std::cout << myFile.options << std::endl; // Выведет числовое значение (в данном случае, 1)
Можно задать собственные значения:
enum Options { Open = 4, Close, Wait, Delete }; // Open = 4, Close = 5, Wait = 6, Delete = 7
Проверка значений перечисления
Проверка значений перечисления:
if (myFile.options == Options::Close) {
std::cout << "Файл закрыт" << std::endl;
}
Перечисления — мощный инструмент в C++, позволяющий создавать читаемый и безопасный код, избегая магических чисел и обеспечивая ясность при работе со множеством связанных значений. Они упрощают работу с данными, повышая надежность и удобство поддержки кода.