Avatar ·

Por que enum class é considerado mais seguro que enum comum em C++?

Olá a todos! Recentemente comecei a estudar C++ e me deparei com enumerações. Eu sei que existem duas formas de declará-las: o bom e velho `enum` e o novo `enum class` (a partir do C++11). Li que `enum class` é "mais seguro", mas não entendo bem qual é a diferença na prática. Aqui está um exemplo que escrevi: ```cpp enum Color { RED, GREEN, BLUE }; enum TrafficLight { RED, GREEN, YELLOW }; // Erro: redeclaração de RED e GREEN int main() { Color c = RED; TrafficLight t = RED; // Eu esperava que isso funcionasse, mas... return 0; } ``` Imediatamente tive problemas: não consigo declarar duas enumerações com nomes de elementos iguais, e o compilador reclama. Além disso, notei que posso escrever algo como: ```cpp int x = RED; // Isso funciona, mas é normal? RED não é um número em termos de significado. if (c == 0) { ... } // Comparar cor com número — isso é sequer válido? ``` Por favor, me digam como `enum class` pode me ajudar? Como ele resolve esses problemas? E se