Страницы

Поиск по вопросам

пятница, 7 февраля 2020 г.

Узнать количество членов enum

#cpp


Как узнать количество членов enum?

Пусть в классе задаю enum: enum a{a1,a2,a3,a4,a5};, а в другом классе есть метод,
который перебирает значения вектора по членам a с помощью for(int...). Но если я потом
увеличу количество членов a, то придется менять это и в методе. И хотелось бы задавать
размер вектора от размера a.

Или узнать какой элемент последний.
    


Ответы

Ответ 1



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

Комментариев нет:

Отправить комментарий