我在此呼籲的問題:如何在地圖中使用const?
m_baseMap.find(baseName)->second->AddVehicale(vehicaleToAdd);
有m_baseMap
下一個紅線,錯誤是:「對象的類型是不與成員函數兼容預選賽」。底圖定義如下:
map <string, const Base*> m_baseMap;
我該如何解決它?
我在此呼籲的問題:如何在地圖中使用const?
m_baseMap.find(baseName)->second->AddVehicale(vehicaleToAdd);
有m_baseMap
下一個紅線,錯誤是:「對象的類型是不與成員函數兼容預選賽」。底圖定義如下:
map <string, const Base*> m_baseMap;
我該如何解決它?
問題不在於find()
,而是由於AddVehicale調用,因爲映射指定了const Base*
。您或者需要使map
爲map<string, Base *>
或確保AddVehicale
是一種常量方法(這意味着您有希望不修改映射中指向的對象),例如void Base::AddVehicale(Vehicale &v) const;
據我所知,編譯器會根據地圖本身是否爲const的時間來選擇是使用const find還是non-const find(就像你對地圖有const引用一樣)
PS Vehicale拼寫爲車輛(我使用谷歌拼寫檢查,如果我不確定,搜索該詞,它會提示正確的拼寫)
我不能使AddVehicle常量,你是什麼意思「讓地圖成爲地圖」? – 2010-09-16 01:16:42
它應該是map
自由使用反引號可以幫助消失的模板參數列表:-)。 – 2010-09-16 01:29:58
「AddVehicale」成員函數是否爲const限定的?如果沒有,那麼你不能通過'const Base *'調用它。標題中提出的問題似乎與您在文中描述的問題無關。 – 2010-09-16 00:54:36
@James +1不會因爲問題而分心。 – wilhelmtell 2010-09-16 01:24:41