2010-06-13 24 views
8

¿por qué no son comparables las instancias de las enumeraciones de C++ 0x fuertemente tipadas?fuertemente tipado C++ 0x comparación de enumeraciones


Actualización: Son comparables en gcc 4.6; No estoy seguro si funcionó en gcc 4.4.

+4

porque está muy tipado :) –

+0

La pregunta real es "¿qué significa fuertemente tipado?", Creo. –

+0

@phresnel: [strong typing] (http://en.wikipedia.org/wiki/Strong_typing); [Enumeraciones fuertemente tipadas en C++ 0x] (http://en.wikipedia.org/wiki/C%2B%2B11#Strongly_typed_enumerations) –

Respuesta

8

Si usa enumeraciones fuertemente tipadas, es como hacer que su enumeración sea realmente un tipo, una clase. Luego sigue las mismas reglas que para las clases.

Las instancias de diferentes clases no se pueden comparar entre sí de forma predeterminada. Debe definir una función de comparación (o función de miembro) para que sean comparables.

Por lo tanto, hacer una enumeración fuertemente tipificada hace que siga esta misma regla.

+5

No veo ningún uso para una enumeración sin poder comparar con otra. IMO, la comparación de instancias enum del * mismo * tipo es * no * un uso indebido. – balki

+2

@balki No entiendo tu comentario. La clase enum no prohíbe la comparación de enum con el mismo tipo, sino que prohíbe la comparación con otros tipos. Agregaré una precisión, en caso de que no esté claro. – Klaim

+2

sí. pero la pregunta era sobre enumeraciones del mismo tipo. Sin embargo, tanto la pregunta como la respuesta son claras ahora. – balki

Cuestiones relacionadas