Это хороший стиль программирования?
Я так думаю. Я делаю то же самое довольно часто.
Есть ли лучший способ сделать это?
class Button
{
public:
// Used for array indexes! Don't change the numbers!
enum State {
NORMAL = 0,
PRESSED,
CLICKED,
NUMBER_OF_BUTTON_STATES
};
};
Недостатком является то, что NUMBER_OF_BUTTON_STATES теперь является действительным значением Button :: State . Не большая проблема, если вы передаете эти значения как int . Но проблема, если вы действительно ожидаете Button :: State .
Использование перечисления в качестве индекса массива не подходит.
Всё хорошо. Просто ДОКУМЕНТ это, так что следующий парень знает, что происходит! (Вот для чего и комментарии.)
Нужно ли указывать значения перечисления?
Без присвоения '=' предполагается, что в enum должны начинаться с нуля и увеличиваться вверх.
Если запись enum имеет присвоенное значение '=', последующие записи enum, отличные от '=', продолжат отсчитывать оттуда.
Источник: Справочное руководство по аннотированному C ++ , стр. 113
Тем не менее, мне нравится указывать начальное значение, чтобы сделать код намного понятнее.