Nie bezpośrednio, ale można użyć następującej sztuczki:
enum class Example { A, B, C, D, E, Count };
Następnie liczność jest dostępny jako (int)Example::Count
.
Oczywiście działa to tylko ładnie, jeśli pozwalasz na automatyczne przypisywanie wartości wyliczenia, poczynając od 0. Jeśli tak nie jest, możesz ręcznie przypisać odpowiednią liczność do zliczenia, co tak naprawdę nie różni się od konieczności utrzymać oddzielną stałą i tak:
enum class Example { A = 1, B = 2, C = 4, D = 8, E = 16, Count = 5 };
jedną wadą jest to, że kompilator pozwoli Ci korzystać Example::Count
jako argument na wartość enum - więc należy być ostrożnym, jeśli to wykorzystać! (Osobiście uważam, że nie stanowi to problemu w praktyce).
Pomyślałem, że mógł istnieć specyficzny mechanizm C++ 11. – bquenin
To nie jest duplikat, nawiasem mówiąc. 'enum' i' enum class'es to bardzo różne koncepcje. – Shoe
@ Shoe ... czy naprawdę są? –