作者tyc5116 (累人啊....)
看板C_and_CPP
標題Re: [問題] operator
時間Tue Jun 5 20:23:53 2012
※ 引述《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