在我的程序中,我有一个全局const std::map
变量和一个试图读取其内容的函数。编译器(G ++ 5.2.0 C ++ 0x)然后给我一个passing ‘const std::map<const char*, const char>’ as ‘this’ argument discards qualifiers [-fpermissive]
的错误。我不能为函数指定cv-qualifier,因为它不是成员函数。我该怎么办?
代码如下:
const map <const char*, const char> opcodes =
{
{"ABCDE", 123},
};
bool _cmdmatch (const char* cmd, const char* cmdlist[], char count)
{
...
if (opcodes[cmd] == opcodes[cmdlist[i]]) return true;
//if (opcodes.at(cmd) == opcodes.at(cmdlist[i])) return true; //The solution
...
}
答案 0 :(得分:2)
我假设您正在使用operator[]
从地图中读取,而该地图无法在const
地图上使用。您应该使用at()
来获取具有特定键的元素,或使用find()
来搜索元素。两者都有const
个版本,可以在const
地图上使用。