#include <EnumString.h>
от http://codeproject.com/Articles/42035/Enum-to-String-and-Vice-Versa-in-C и после
enum FORM {
F_NONE = 0,
F_BOX,
F_CUBE,
F_SPHERE,
};
вставить
Begin_Enum_String( FORM )
{
Enum_String( F_NONE );
Enum_String( F_BOX );
Enum_String( F_CUBE );
Enum_String( F_SPHERE );
}
End_Enum_String;
Работает нормально, если значения в enum не повторяются.
Пример в коде
enum FORM f = ...
const std::string& str = EnumString< FORM >::From( f );
и наоборот
assert( EnumString< FORM >::To( f, str ) );