我遇到了这个电话的问题:
m_baseMap.find(baseName)->second->AddVehicale(vehicaleToAdd);
m_baseMap
下面有一个红线,错误是:“该对象具有与成员函数不兼容的类型限定符”。基本映射定义如下:
map <string, const Base*> m_baseMap;
我该如何解决?
答案 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拼写车辆(我使用谷歌拼写检查,如果我不确定,搜索单词,它会建议拼写正确)