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

标签 c++ map

我有以下枚举和映射:

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/

相关文章:

c++ - K最近邻C/C++实现

java - 仅带键的映射 - 用于包含检查

c++ - STL Map 是否自动初始化值?

c++ - 调试时如何在 Visual C++ .NET (Visual Studio 2003) 中查看 std::map 的内容?

c++ - 从 C-Style 字符串 C++ 中删除字符

c++ - 在编写 iterator 和 const_iterator 时避免代码重复

c++ - 使用模板元编程计算阶乘

api - 在 Google Maps API v3 中打开/关闭标记

java - remove() 方法太慢

c++ - RegisterWaitForSingleObjectEx() 和几个 SetEvent()