#string #enums #c 98
Вопрос:
Я объявил перечисление и строку
string SS;
enum CS {AA, BB, CC, DD};
и я хочу создать переменную с именем CN типа CS и назначить SS для перечисления CS.
Я поискал это в Интернете, большинство решений для C 11 и выше. Я попытался использовать карту, но это не сработало.
map<string, enum> CN;
CN["AA"]=0;
CN["BB"]=1;
CN["CC"]=2;
CN["DD"]=3;
Кто-нибудь может дать мне несколько советов?
Как создать CS в качестве перечисления типов CS?
Я буду вам очень признателен!
Комментарии:
1.
enum CS {"AA", "BB", "CC", "DD"};
вы имели в виду недопустимый C ?enum CS {AA, BB, CC, DD};
2. да, спасибо, что поправили меня!
Ответ №1:
Ваше использование карты почти правильно, если значения инициализированы в области функций.
То есть это нормально
std::map<std::string, CS> CN;
int main() {
CN["AA"]=AA;
CN["BB"]=BB;
CN["CC"]=CC;
CN["DD"]=DD;
// use CN
}
Однако это не так
std::map<std::string, CS> CN;
CN["AA"]=AA; // can't have expressions at namespace scope
CN["BB"]=BB;
CN["CC"]=CC;
CN["DD"]=DD;
int main() {
// try to use CN
}