Как объясняется в других ответах: синтаксис MyEnum::SomethingElse
недопустим в обычных перечислениях C ++ 98, если ваш компилятор не поддерживает их с помощью нестандартных расширений.
Лично мне не нравится объявление enum MyEnum {A, B};
потому что имя типа отсутствует при использовании значений перечисления.Это может привести к конфликту имен в текущем пространстве имен.
Поэтому пользователь должен ссылаться на имя типа в каждом значении перечисления.Пример, чтобы избежать объявления A дважды:
enum MyEnum {MyEnum_A, MyEnum_B};
void A(void) {
MyEnum enumInstance = MyEnum_A;
}
Я предпочитаю использовать определенное пространство имен или структуру.Это позволяет ссылаться на значения перечисления с последним стилем C ++:
namespace MyEnum {
enum Value {A,B};
}
void A(void) {
MyEnum::Value enumInstance = MyEnum::A
}