У меня есть map
, определяемый следующим образом:
typedef std::map<AsnIdentifier, AsnValue, AsnComparator> MibMap;
У меня есть одна такая карта, и я хочу передать ее другой функции, чтобы функция, которой она передана, не могла изменить ее.
void someFunc() {
MibMap someMap = GetMibMap();
otherFunc(someMap);
}
И подпись otherFunc
могла бы быть такой для неизменности:
void otherFunc(const MibMap& someMap);
Но как только я использую find
функцию карты, я получаю довольно многословную компиляциюошибка.
void otherFunc(const MibMap& someMap) {
MibMap::iterator findVal = someMap.find(//pass the key to find); //this does not compile
}
Как только я удалю const
из сигнатуры метода, ошибка компиляции исчезнет. В чем причина? Я хочу сохранить карту неизменной, но в то же время я не уверен в этой ошибке компиляции.
Редактировать : ошибка компиляции выглядит следующим образом:
no suitable user-defined conversion from "std::_Tree_const_iterator... (and a whole long list)