Avatar ·

Pourquoi enum class est-il considéré comme plus sûr que enum classique en C++ ?

Bonjour à tous ! J'ai récemment commencé à apprendre le C++ et j'ai rencontré les énumérations. Je sais qu'il existe deux façons de les déclarer : le bon vieux `enum` et le nouveau `enum class` (depuis C++11). J'ai lu que `enum class` est "plus sûr", mais je ne comprends pas bien la différence en pratique. Voici un exemple que j'ai écrit : ```cpp enum Color { RED, GREEN, BLUE }; enum TrafficLight { RED, GREEN, YELLOW }; // Erreur : redéclaration de RED et GREEN int main() { Color c = RED; TrafficLight t = RED; // Je m'attendais à ce que ça marche, mais... return 0; } ``` J'ai immédiatement eu des problèmes : je ne peux pas déclarer deux énumérations avec les mêmes noms d'éléments, et le compilateur râle. De plus, j'ai remarqué que je peux écrire quelque chose comme : ```cpp int x = RED; // Ça marche, mais est-ce normal ? RED n'est pas un nombre par son sens. if (c == 0) { ... } // Je compare une couleur avec un nombre — est-ce légal ? ``` Dites-moi, s'il vous plaît, en quoi `enum class` peut-il m'aider ? Comment résout-il ces problèmes ? Et si...