无法访问const static std :: map enum struct

Ben*_*nnX 1 c++ enums c++11

我试图有一个枚举结构映射,以保证默认值为配置值,如果它不存在并保证只访问"真正的"配置值.(没有std :: string get)

所以Header看起来像这样:

enum ConfigValues
{
    LOG_LEVEL,
};

class Config
{
public:
    std::string get(const ConfigValues& key);
private:
    struct ConfigMapping
    {
        std::string configKeyString;
        std::string defaultValue;
    };

    const static std::map<ConfigValues, ConfigMapping> m_mapping;
}
Run Code Online (Sandbox Code Playgroud)

而cpp包含这个:

const std::map<ConfigValues, Config::ConfigMapping> Config::m_mapping=
{
    {LOG_LEVEL, { "logLevel", "5" } },
};
std::string Config::get(const ConfigValues& key)
{
    std::string key = m_mapping[key].configKeyString; // <-- Does not work
}
Run Code Online (Sandbox Code Playgroud)

但我无法访问地图.

Tel*_*kis 6

operator[]不是 const的了std::map.

at改用.

在C++ 11之前:

如果您不使用C++ 11,则必须使用find具有const版本的版本.