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

时间:2015-07-28 07:56:38

标签: c++ c++11 enums

我正在尝试使用枚举结构映射来保证默认值为配置值,如果它不存在并且仅保证访问"真实" config values。(No 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;
}

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
}

但我无法访问地图。

1 个答案:

答案 0 :(得分:6)

对于operator[]

std::map 不是 const。

改为使用at

在C ++ 11之前:

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