将全局常量传递为'这个'参数抛弃限定词

时间:2015-10-29 11:35:48

标签: c++ global-variables const

在我的程序中,我有一个全局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
    ...
}

1 个答案:

答案 0 :(得分:2)

我假设您正在使用operator[]从地图中读取,而该地图无法在const地图上使用。您应该使用at()来获取具有特定键的元素,或使用find()来搜索元素。两者都有const个版本,可以在const地图上使用。