как работать с const на карте? - PullRequest
0 голосов
/ 16 сентября 2010

У меня проблемы с этим вызовом:

m_baseMap.find(baseName)->second->AddVehicale(vehicaleToAdd);

Красная линия под m_baseMap, ошибка: «объект имеет спецификаторы типа, которые не совместимы с функцией-членом»Базовая карта определяется следующим образом:

map <string, const Base*> m_baseMap;

Как это исправить?

1 Ответ

3 голосов
/ 16 сентября 2010

Проблема не в find(), а в вызове AddVehicale, потому что карта указывает const Base*.Вам либо нужно сделать map be map<string, Base *>, либо убедиться, что AddVehicale является методом const (что означает, что вы обещаете не изменять объект, указанный на карте), например, void Base::AddVehicale(Vehicale &v) const;

Насколько я знаю, компилятор будет выбирать, использовать ли const find или non-const find, основываясь на том, является ли сама карта константной в данный момент (например, если у вас есть константная ссылка на карту)

PS АВТОМОБИЛЬ это пишется Автомобиль (я использую Google для проверки правописания, если я не уверен, найдите слово, и оно предложит правильное написание)

...