gpt4 book ai didi

C++常量混淆

转载 作者:行者123 更新时间:2023-11-30 04:16:29 25 4
gpt4 key购买 nike

第 29 行在编译时令人窒息:

void
CI_Metadata::get_record_metadata(const char* block, RecordInfoVector* record_info_vector) {
*record_info_vector = this->records.at(block); // <== LINE 29
return;
}

错误是:

CI_Metadata.cpp: In member function ‘void CI_Metadata::get_record_metadata(const char*, RecordInfoVector*)’:
CI_Metadata.cpp:29: error: invalid conversion from ‘const char*’ to ‘char*’
CI_Metadata.cpp:29: error: initializing argument 1 of ‘_Tp& std::map<_Key, _Tp, _Compare, _Alloc>::at(const _Key&) [with _Key = char*, _Tp = std::vector<std::pair<char*, bool>, std::allocator<std::pair<char*, bool> > >, _Compare = std::less<char*>, _Alloc = std::allocator<std::pair<char* const, std::vector<std::pair<char*, bool>, std::allocator<std::pair<char*, bool> > > > >]’

我假设这意味着 at() 不会采用 const char *。那么,如何访问存储在 this->records.at(block) 中的 vector ,其中 block 是一个 const char*

最佳答案

我认为解决此问题和许多其他潜在问题的最简单方法是图灵 std::map<char*, ...>进入std::map<std::string, ...> .

或者,定义一个合适的比较器:Using char* as a key in std::map

关于C++常量混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17759413/

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