gpt4 book ai didi

c++ - 将全局常量作为 'this' 参数传递会丢弃限定符

转载 作者:行者123 更新时间:2023-11-28 02:18:08 25 4
gpt4 key购买 nike

在我的程序中,我有一个全局 const std::map变量和一个试图读取其内容的函数。编译器 (G++ 5.2.0 C++0x) 然后给我一个错误 passing ‘const std::map<const char*, const char>’ as ‘this’ argument discards qualifiers [-fpermissive] .我无法为该函数指定 cv 限定符,因为它不是成员函数。我该怎么办?

代码如下:

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
...
}

最佳答案

我假设您正在使用 operator[] 从 map 中读取,这不能用于 const map 。您应该使用 at() 获取具有特定键的元素,或使用 find() 搜索元素。两者都有 const 版本,可以在 const map 上使用。

关于c++ - 将全局常量作为 'this' 参数传递会丢弃限定符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33413147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com