将 C++ 枚举映射为 const char*

Krz*_*aku 4 c++ dictionary

我有以下枚举和映射:

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)

从我读到的内容来看,这应该可以工作,但该函数不会返回任何内容。没有编译时错误,也没有运行时错误。

Art*_*hur 5

这是我的建议:

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)