1.
STL의 map, multimap, hash_map [] operator는
const가 아님.
key가 없으면 key를 만들어 주기 때문에 modify가 일어남
따라서 [] operator를 이용하여 access하면
"discards qualifiers" 에러가 날 수 있다.
예)
passing `const Str_Str_Map' as `this' argument of `_Tp&
__gnu_cxx::hash_map<_Key, _Tp, _HashFcn, _EqualKey,
_Alloc>::operator[](__gnu_cxx::hashtable<std::pair<const _Key, _Tp>, _Key,
_HashFcn, std::_Select1st<std::pair<const _Key, _Tp> >, _EqualKey,
_Alloc>::key_type&) [with _Key = std::string, _Tp = std::string, _HashFcn =
string_hash, _EqualKey = std::equal_to<std::string>, _Alloc =
std::allocator<std::string>]' discards qualifiers
해결책)
[] operator 대신 find를 이용한다.
2. const_iterator를 return value로 넘기는 method는 const가 되어야 함.
예)
typename vector<T>::const_iterator end() const
{
return t_vec_.end();
}
그렇지 않으면 call하는 부분에서 에러가 남.
댓글 없음:
댓글 쓰기