我有以下枚举和映射:
typedef enum {
MaxX = 0,
MaxY,
MaxCells,
MaxCycles,
Threes
} SettingName;
typedef std::map<SettingName, const char*> SettingNameCollection;
SettingNameCollection settingNames;
Run Code Online (Sandbox Code Playgroud)
我有以下函数来返回枚举名称:
const char* gofBoard::getSettingName(unsigned x) {
return settingNames[static_cast<SettingName>(x)];
}
Run Code Online (Sandbox Code Playgroud)
从我读到的内容来看,这应该可以工作,但该函数不会返回任何内容。没有编译时错误,也没有运行时错误。
这是我的建议:
1-编写这个宏:
#define SMART_STRINGIFY_CASE(ENUM_CODE) case ENUM_CODE: return # ENUM_CODE
2-编写这个函数:
const char* SettingNamesToString( settingNames const input)
{
switch(input)
{
SMART_STRINGIFY_CASE(MaxX);
SMART_STRINGIFY_CASE(MaxY);
...
default:
// your own !
}
Run Code Online (Sandbox Code Playgroud)