Это стандартная проблема на С++ проектах, как конвертировать enum'ы с строки и обратно.
Один из варинтов примерно такой:
class CommandKind
{
public:
enum Id
{
APP_INIT,
APP_CLOSE
};
std::string toString( Id id )
{
switch( id )
{
case APP_INIT: return std::string("APP_INIT");
case APP_CLOSE: return std::string("APP_CLOSE");
}
return std::string("Undefind id")
}
Id fromString( const std::string& idAsString );
}
Какое бы ты решение не выбрал, всегда придется писать какой-то код.
Но поскольку он всегда одинаков, то это дело можно очень хорошо автоматизировать
и быстро налабать какой-нибудь скриптик, которые подобные классы генерит автоматически...