Как указывалось другими, значения перечислений имеют тип int
. Вместо этого вы можете написать небольшую функцию, которая преобразует из enum в String
, например:
std::string GetStringFromEnum(home iHome)
{
switch (home)
{
case yes: return "yes";
case no: return "no"; break;
default: return "here be dragons";
}
}
и наоборот:
home GetEnumFromString(std::string iImput)
{
if (iImput == "yes") return yes;
return no; //if you extend the enum beyond 2 values, this function will get more complicated
}
и вы можете изменить свой код следующим образом:
homes = GetStringFromEnum(no)
Недостатком этого подхода является то, что если вы изменяете перечисление, вы также должны изменить функцию преобразования.
НТН,
JP