Sé que esta es una pregunta muy antigua, pero como la respuesta aceptada es incorrecta, me siento obligado a publicar la mía. Reutilizaré el ejemplo de la respuesta aceptada, ligeramente modificado. (Haciendo la suposición de que las enumeraciones son secuenciales.)
// Incorrect code, do not use!
enum blah {
FIRST = 0,
SECOND, // 1
THIRD, // 2
END // 3
};
const int blah_count = END - FIRST;
// And this above would be 3 - 0 = 3, although there actually are 4 items.
Cualquier desarrollador sabe la razón: count = last - first + 1
. Y esto funciona con cualquier combinación de signos (ambos extremos negativos, ambos positivos, o solo el primer extremo negativo). Puedes probar.
// Now, the correct version.
enum blah {
FIRST = 0,
SECOND, // 1
THIRD, // 2
END // 3
};
const int blah_count = END - FIRST + 1; // 4
Editar: volviendo a leer el texto, tengo una duda. ¿Eso significa que END
no forma parte de los artículos ofrecidos? Esto se ve muy raro para mí, pero bueno, supongo que podría tener sentido ...
Consulte la pregunta sobre ['enum' en C++ como' enum' en Ada] (http: // stackoverflow.com/questions/300592/enum-in-c-like-enum-in-ada). –