看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《tyc5116 (累人啊....)》之銘言: : class GMMtors : { : public: : GMotor* operator[](String NameIndex) const; : private: : map<String,GMotor*> m_MMotors; : }; : GMotor* GMMtors::operator[](String NameIndex) const : { : if (!this->m_MMotors.count(NameIndex)) : { : return this->m_MMotors[NameIndex]; //這裡出錯 : } : } : 本來是想避掉在無形中自己插入新的元素,結果發現這個問題 : 看了錯誤訊息,但不是很懂這個opeerator+是在哪邊會被用到? : ◆ From: 111.251.163.42 : ※ 編輯: tyc5116 來自: 111.251.163.42 (06/05 16:36) : 推 shadow0326:map::operator[]非const,不能在const method裡呼叫 06/05 16:44 : 推 iamstudent:那operator[]要寫兩個版本。一個const、一個可寫入 06/05 19:21 這地方我有個問題,上官網看了一下,map::operator[]非const 而我這邊是const,這不算是多載嗎? 另外,像這樣的程式碼,承上面 GMMotor* Obj = new GMMotor(); ... Obj["aa"]->dosomething(); //如果類似這樣的語法要compile通過的話 可以怎麼改呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.25.176.145
legnaleurc:this 是 const, 你只能用 const member 06/05 20:34
tyc5116:唔?不懂... 06/05 21:01
legnaleurc:就是你上一篇一樓的意思,這跟 overloading 無關 06/05 21:47
tyc5116:恩...了解 06/05 22:24
stimim:改用 map.find(...) 06/05 22:58
tyc5116:樓上那個我想過了,我只是想有沒有辦法改成如上的表示法.. 06/05 23:06
loveme00835:mutable 06/06 01:05