→ tinlans:bool operator<(const FUN& right) const <--- 少這個 08/11 10:34
→ tinlans:因為你沒主程式我也懶得自己測試,但是根據經驗 99.9999% 08/11 10:34
→ tinlans:是少那個 const。 08/11 10:34
→ Yshuan:樓上是對的 可以請問加在那的意義是...? 08/11 13:09
推 VictorTom:印象中method加const修飾子是method內不得變更object的 08/11 13:19
→ VictorTom:data member內容; 就不確定compare operator是否規定一 08/11 13:20
→ VictorTom:定要掛上const, 想一想其實也很合理就是了:) 08/11 13:20
→ Yshuan:感謝V大說明... 剛正在翻PRIMER... cmp的確不該動到 08/11 13:44
→ hilorrk:也該貼個error的訊息...應該是this型態的問題 08/11 13:47
→ tinlans:演算法實作細節如果把物件以 const T & 當參數傳遞到其它 08/11 13:49
→ tinlans:函式,那個函式試圖比較兩個 const T &, 08/11 13:50
→ tinlans:如果 T::operator< 只有 non-const 版本,那一定出問題。 08/11 13:51
→ tinlans:實作細節不想動它,自然會以 const 的形式接它和傳遞它。 08/11 13:53
→ tinlans:物件以 const 形式被使用時,只有 const member function 08/11 13:55
→ tinlans:可被呼叫。以 non-const 形式存在時則兩種都能呼叫。 08/11 13:56
→ tinlans:所以如果不是經過事先規劃而是靠直覺新增 member function 08/11 13:57
→ tinlans:的時候,最好先假設全部都是 const,再確定要拿掉它的理由 08/11 13:58
→ tinlans:。用這種方法去寫 code,就不會一直發生事後以 const 形式 08/11 13:59
→ tinlans:傳遞並使用,才一個一個發現原來要補 const 這種情形。 08/11 13:59
→ tinlans:反過來你忘記拿掉 const 卻又在實作時改變 data member, 08/11 14:00
→ tinlans:這第一時間 compiler 就會報錯。 08/11 14:00
推 hilorrk:T大知識之淵博真是令小弟十分敬服啊...<(_ _)> 08/11 14:01
推 nowar100:Push! 08/11 14:03