我正在写作业,我遇到了一些问题 使用以下unordered_map:
std::unordered_map<std::string, Account*> m_accounts_map;
编译没有错误:
const Account& Bank::getBankAccount(const std::string ID) const
{
return *m_accounts_map.at(ID);
}
不编译:
const Account& Bank::getBankAccount(const std::string ID) const
{
return *m_accounts_map[ID];
}
以上代码生成以下编译错误:
错误:传递&#39; const std :: unordered_map,帐户*&gt;&#39;作为&#39;这个&#39;参数丢弃限定符[-fpermissive]
但是当我删除它编译的const
时:
const Account& Bank::getBankAccount(const std::string ID)
{
return *m_accounts_map[ID];
}
根据std::unordered_map::operator[] 不同的是:
类似的成员函数unordered_map :: at在具有键的元素存在时具有相同的行为,但在不存在时抛出异常。
但是这并没有解释这种行为。
我不明白为什么剂量operator[]
会丢弃限定词。
那么我不知道的微妙差异是什么?