Можно ли инициализировать константу класса enum вне класса?
Есть enum:
enum :int {OneCop , FiveCops, TenCops, FivtyCops, One, Two, Five, Ten, Fivty, Hundred, FiveHundereds, Tousand, FiveTousand};
Можно ли инициализировать переменные вне "enum", те как-то так:
enum :int {OneCop , FiveCops, TenCops, FivtyCops, One, Two, Five, Ten, Fivty, Hundred, FiveHundereds, Tousand, FiveTousand};
OneCop = 0;
У меня при попытке подобного пишет: "expression must be a modificated lmalue"
Ответы (2 шт):
Нельзя. Весь смысл enum-а это мапнуть константный числовой массив в какие-то человекочитаемые названия.
И ещё лучше использовать enum class
Тут имеется фундаментальное непонимание енумераторов. Идентификаторы, перечисляемые внутри енумераторов, не являются полями, как в структурах или классах. Они существуют только во время компиляции и не присутствуют в памяти программы, нельзя получить их адрес или ссылаться на них. При их использовании получается выражение категории prvalue, аналогично встроенным литералам. И значение для них должно идти сразу и являться константным выражением.
enum Cops:int {OneCop = 0, FiveCops = 1,