Я знаю, что это очень старый вопрос, но поскольку принятый ответ неверен, я чувствую себя обязанным опубликовать свой собственный. Я буду использовать пример принятого ответа, слегка измененный.
(Предполагая, что перечисления являются последовательными.)
// 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.
Любой разработчик знает причину: count = last - first + 1
.
И это работает с любой комбинацией признаков (оба конца отрицательны, оба положительны или только первый конец отрицателен). Вы можете попробовать.
// Now, the correct version.
enum blah {
FIRST = 0,
SECOND, // 1
THIRD, // 2
END // 3
};
const int blah_count = END - FIRST + 1; // 4
Редактировать: прочитав текст снова, у меня возникло сомнение. Это означает, что END
не является частью предлагаемых товаров? Это выглядит странно для меня, но, думаю, это может иметь смысл ...