Получение максимального значения перечисления [дубликат]C++

Программы на C++. Форум разработчиков
Anonymous
Получение максимального значения перечисления [дубликат]

Сообщение Anonymous »

У меня есть код C++, который использует битовый набор для хранения значений перечисления, которые были найдены в моих структурах данных (на самом деле это немного сложнее, но это не имеет значения для вопроса).
Это означает, что когда у меня есть такое перечисление:

Код: Выделить всё

enum Color
{
RED
, GREEN
, BLUE
};
Я хочу определить свой битовый набор следующим образом:

Код: Выделить всё

std::bitset
Конечно, я не хочу жестко запрограммировать значение 3.
В некоторых случаях я могу просто добавить «терминатор» в перечисление, например:

Код: Выделить всё

enum Color
{
RED
, GREEN
, BLUE
, _COLOR_TERMINATOR
};
А я могу написать вот что:

Код: Выделить всё

std::bitset
Но я не могу сделать это во всех своих перечислениях. Если бы я сделал это с некоторыми из моих перечислений, средства проверки кода (например, Lint) стали бы жаловаться, что не все значения перечисления используются в операторе переключения.
Есть ли способ получить максимум значений в перечислении, не меняя ничего в самом перечислении? Например. что-то вроде std::max?
Использование Visual Studio 2013 и C++.

Подробнее здесь: https://stackoverflow.com/questions/234 ... of-an-enum

Вернуться в «C++»