第 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)中的向量,其中 block 是const char*?