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