Что я делаю не так?
blockquote>Невозможно сказать, не зная, что на самом деле пытается сделать ваше приложение. В качестве первого шага, чтобы просто диагностировать причину проблемы, вам нужно внедрить в свое приложение какую-то регистрацию. Как только вы увидите сообщение об исключении и трассировку стека, вы, вероятно, сможете найти способ исправить ошибку.
Но если вы не знаете , почему происходит сбой приложения, вы никогда не сможете это исправить.
По умолчанию перечислениям автоматически дает целочисленные значения, запускающиеся от 0 компилятор. Таким образом, дата будет нулем, время одни и два денег. Следующее значение дано 'psuedo' перечислению значений TYPE_COUNT
, которому дадут значение три, который, оказывается, количество 'надлежащих' перечислимых значений.
TYPE_UNKNOWN
другое значение, которое представляет что-то, что не является 'надлежащим' значением, так провалит тест e < TYPE_COUNT
. Наличие его равняется TYPE_COUNT
средства, что каждое отличное значимое значение непрерывно, но я не знаю ни о каком значительном преимуществе для того (было бы то, если TYPE_COUNT
был тот меньше, чем питание 2, который мог бы произвести, какое представление компилятор мог использовать, и его 'хорошее', чтобы иметь непрерывные значения, но это действительно не имеет значения, поскольку Вы не увеличили бы их мимо TYPE_COUNT
так или иначе)
Почему имеют type_count и почему присваивают type_count type_unknown?
Сохранять вкладку на максимальном позволенном значении для enum
. Помните, не было бы иначе никакого способа проверить, правильно ли данное значение (в диапазоне) или нет.
Перечислимые значения являются в основном целочисленными константами. По умолчанию им дают значение последнего элемента в перечислении + 1 (и 0 для первого элемента). Когда Вы хотите считать элементы, которые могли бы быть полезны для отображения его с массивом или чем-то перечисления, объявленного как этот (который будет обновлен динамично, если Вы добавите или удалите что-то из него), можно поместить КОЛИЧЕСТВО, постоянное в конце его (TYPE_COUNT
в Вашем примере). Чтобы смочь отличить недопустимые значения в перечислении, Вы могли бы хотеть объявить другую константу. В Вашем примере, который постоянный будет равен постоянному количеству, который является одним значением, больше, чем самое большое значение Вашего перечисления.
TYPE_COUNT может служить для определения размеров массива, индексированного элементами перечисления:
type_info my_info[TYPE_COUNT];
или может использоваться в условии выхода для цикла. TYPE_UNKNOWN может использоваться для представления недопустимого или неопределенного значения для типа (-1, могла быть альтернатива TYPE_COUNT, поскольку это - значение).