C++ 无法访问常量静态std::map枚举结构
我正在尝试使用枚举结构映射,以确保在不存在默认值的情况下将其映射为配置值,并确保仅访问真实的配置值。No std::string get 因此,标题如下所示:C++ 无法访问常量静态std::map枚举结构,c++,c++11,enums,C++,C++11,Enums,我正在尝试使用枚举结构映射,以确保在不存在默认值的情况下将其映射为配置值,并确保仅访问真实的配置值。No std::string get 因此,标题如下所示: enum ConfigValues { LOG_LEVEL, }; class Config { public: std::string get(const ConfigValues& key); private: struct ConfigMapping { std::strin
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
}
但是我无法访问映射。操作符[]不是std::map的常量
改用
在C++11之前:
如果不使用C++11,则必须使用具有常量版本的。运算符[]不是std::map的常量
改用
在C++11之前:
如果你不使用C++11,你必须使用一个常量版本。Ah正确。我没看到。将在启用后几分钟内接受此设置。谢谢你的提示。我刚刚更新了我的答案,供那些寻找非C++11答案的人参考。啊,对了。我没看到。将在启用后几分钟内接受此设置。谢谢你的提示。我刚刚为寻找非C++11答案的人更新了我的答案。在Config::get中,参数和本地都被命名为key。这是示例代码中的输入错误还是实际问题?也许实际的编译器消息可能会让事情更清楚。另请参见Config::get中的,parameter和local都被命名为key。这是示例代码中的输入错误还是实际问题?可能实际的编译器消息会使事情更清楚。另请参阅