Используйте enum class

Рекомендуется писать enum class (C++11) вместо старого enum в стиле С для:

  • ограничения области видимости и предотвращения конфликтов;
  • типобезопасности (нет неявных преобразований)
  • возможности указания типа значений (по умолчанию int)

Неправильно:

enum Color { red, green, blue };
enum TrafficLight { red, yellow, green }; // Ошибка: red и green уже определены!

Правильно:

enum class Color { red, green, blue };
enum class TrafficLight { red, yellow, green }; // OK, разные пространства имён

Теперь нужно явно указывать область:

Color c = Color::red; // вместо просто red