Как узнать количество членов enum?
Пусть в классе задаю enum: enum a{a1,a2,a3,a4,a5};, а в другом классе есть метод, который перебирает значения вектора по членам a с помощью for(int...). Но если я потом увеличу количество членов a, то придется менять это и в методе. И хотелось бы задавать размер вектора от размера a
Или узнать какой элемент последний.
Ответ
Узнать кол-во констант в перечислении не представляется возможным. Если вы используете проход по циклу, то может быть достаточно просто задать константу, говорящую о максимальном размере. Ну, или если всё же хочется иметь именованные константы, то можно в enum задать последний элемент как aMax
enum A { a1, a2, a3 ... , aMax };
Цикл в таком случае будет выглядеть так:
for( A v = a1; v < aMax; ++v ) { ... }
Добавлю, что вся эта схема работает, только при отсутствии разрывов в значениях перечисления. Например:
enum A { a1, a2 = 100, a3 ... , aMax };
породит проблему отсутствия значений в диапазоне [1..99]. Т.е. цикл должен как-то это учитывать, а не идти обычным инкрементом.
Комментариев нет:
Отправить комментарий