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...
No answers yet.
Connectez-vous pour laisser une réponse