我有以下枚举和映射:
typedef enum {
MaxX = 0,
MaxY,
MaxCells,
MaxCycles,
Threes
} SettingName;
typedef std::map<SettingName, const char*> SettingNameCollection;
SettingNameCollection settingNames;
我有以下函数来返回枚举名称:
const char* gofBoard::getSettingName(unsigned x) {
return settingNames[static_cast<SettingName>(x)];
}
根据我的阅读,它应该可以工作,但该函数不返回任何内容。没有编译时错误,也没有运行时错误。
最佳答案
这是我的建议:
1- 编写这个宏:
#define SMART_STRINGIFY_CASE(ENUM_CODE) case ENUM_CODE: 返回 # ENUM_CODE
2- 编写这个函数:
const char* SettingNamesToString( settingNames const input)
{
switch(input)
{
SMART_STRINGIFY_CASE(MaxX);
SMART_STRINGIFY_CASE(MaxY);
...
default:
// your own !
}
关于c++ - 将 C++ 枚举映射为 const char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13854843/