Avatar ·

¿Por qué se considera que enum class es más seguro que enum normal en C++?

¡Hola a todos! Recientemente comencé a estudiar C++ y me encontré con las enumeraciones. Sé que hay dos formas de declararlas: el viejo `enum` y el nuevo `enum class` (desde C++11). Leí que `enum class` es "más seguro", pero no entiendo bien cuál es la diferencia en la práctica. Aquí hay un ejemplo que escribí: ```cpp enum Color { RED, GREEN, BLUE }; enum TrafficLight { RED, GREEN, YELLOW }; // Error: redeclaración de RED y GREEN int main() { Color c = RED; TrafficLight t = RED; // Esperaba que esto funcionara, pero... return 0; } ``` Inmediatamente tuve problemas: no puedo declarar dos enumeraciones con los mismos nombres de elementos, y el compilador se queja. Además, noté que puedo escribir algo como: ```cpp int x = RED; // Esto funciona, pero ¿es normal? RED no es un número en sentido estricto. if (c == 0) { ... } // Comparar un color con un número — ¿es esto siquiera legal? ``` Por favor, explíquenme cómo puede ayudarme `enum class`. ¿Cómo resuelve estos problemas? Y si...