如何在地图中使用const?

时间:2010-09-16 00:50:08

标签: c++ map iterator

我遇到了这个电话的问题:

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

m_baseMap下面有一个红线,错误是:“该对象具有与成员函数不兼容的类型限定符”。基本映射定义如下:

map <string, const Base*> m_baseMap;

我该如何解决?

1 个答案:

答案 0 :(得分:3)

问题不在于find(),而在于调用AddVehicale,因为地图指定了const Base*。您需要将map设为map<string, Base *>或确保AddVehicale是const方法(这意味着您承诺不修改地图中指向的对象),例如void Base::AddVehicale(Vehicale &v) const;

据我所知,编译器将根据当时地图本身是否为const来选择是使用const find还是非const find(就好像你有一个const引用地图)

P.S。 Vehicale拼写车辆(我使用谷歌拼写检查,如果我不确定,搜索单词,它会建议拼写正确)