Это работает:
enum TPriority { EPriorityIdle = -100, EPriorityLow = -20, EPriorityStandard = 0, EPriorityUserInput = 10, EPriorityHigh = 20 }; TPriority priority = EPriorityIdle;
Но это не работает:
TPriority priority = -100;
Есть причина?
Это тоже работает, но вам нужен явный тип
TPriority priority = (TPriority)-100;
коротко говоря: это побеждает цель иметь перечисление
Нельзя назначить int для перечисления, даже если значение соответствует одному из значений перечисления.
Однако, кастинг будет работать:
TPriority priority = static_cast<TPriority>(-100);
Нет преобразования типа из значений типа enum в сам тип enum. Только наоборот.