2010-06-13 7 views
8

pourquoi les instances d'énumérations C++ 0x fortement typées ne sont-elles pas comparables les unes aux autres?comparaison d'énumération C++ 0x fortement typée


Mise à jour: Ils sont comparables dans gcc 4,6; Je ne suis pas sûr si cela a fonctionné dans gcc 4.4.

+4

parce qu'il est fortement typé :) –

+0

La vraie question est "qu'est-ce que signifie fortement typé?", Je pense. –

+0

@phresnel: [typage fort] (http://en.wikipedia.org/wiki/Strong_typing); [énumérations fortement typées en C++ 0x] (http://en.wikipedia.org/wiki/C%2B%2B11#Strongly_typed_enumerations) –

Répondre

8

Si vous utilisez des énumérations fortement typées, c'est comme faire de votre énumération un type vraiment, une classe. Ensuite, il suit les mêmes règles que pour les classes.

Les instances de classes différentes ne peuvent pas être comparées entre elles par défaut. Vous devez définir une fonction de comparaison (ou une fonction de membre) pour les rendre comparables.

Par conséquent faire une énumération fortement typée fait suivre cette même règle.

+5

Je ne vois aucune utilité pour une énumération sans pouvoir comparer avec une autre. IMO, La comparaison des instances enum de type * same * n'est pas un abus. – balki

+2

@balki Je ne comprends pas votre commentaire. La classe enum n'interdit pas la comparaison d'enum avec le même type, elle interdit la comparaison avec d'autres types. Je vais ajouter une précision, au cas où ce ne serait pas clair. – Klaim

+2

oui. mais la question portait sur des enum du même type. Cependant, la question et la réponse sont claires maintenant. – balki

Questions connexes