Re: overload operator < 來排序

看板Programming作者 (陳揚和)時間15年前 (2009/04/03 06:25), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串6/9 (看更多)
感謝學長詳細的解答 但我其實想用現成的sort.. 現成的sort好像需要pass-in comparison function. 而且我希望這個comparison function 可以輕易抽換 且是根據外部的資訊輕易抽換.. 比如說我有個array存有每個人的名子, 然後一個object存有每個人的數學成績 另一個object有國文成績 ....etc 我想要有個comparison的function pointer 指到數學成績這個object的member function 比較兩個人的數學成績 for example 然後也可以指到國文成績這個object..如果要排國文的話... 我不知道要怎麼寫才能利用外部的資料+comparison function 和現成的sort..而我覺得這一定有人寫過相同的問題... 如果用一個interface 要怎麼用呢.. ※ 引述《march20 ()》之銘言: : C++ 其實很有彈性的, 就算不用 function pointer 還是可以辦到很多事. : 限制自己用 function pointer (還是 member function pointer) 根本是作繭自縛 : ※ 引述《sorryChen (陳揚和)》之銘言: : : 感謝回答 但是因為要切換的function很多 (各種不同的hash functions) : 這很明顯地是種 strategy pattern, 去翻翻 design pattern 吧 : : 所以必須有function pointer. 沒辦法一個function寫一個 或inherit 一個 class.. : 為什麼不行? C++ 明明就有 multi-inheritance. 至少弄個純 interface 絕對是可以的 : : 而且那些function 會用到不同class 的data, 雖然參數回傳type相同.. : : 所以希望有generic object type的function pointer.. : : EX: 假設我有船和車兩種class 他們都有個function叫 int speed(); : : 回傳速度, 而且計算速度會用到object內部的特有的member variable value. : 弄個 interface, 然後個自 override speed() 不就好了嗎, 為什麼要去找石頭砸自己腳 @@ : : 我想在外部設有個function pointer指到這兩種class中的一種instance : : 然後回傳速度.. 可能嗎.. : : (感謝大家的指導) : 再不然請用 template 吧, Modern C++ Design 有一堆神奇的 template pattern, 應該不難找到你要的東西 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 128.125.87.33

04/03 06:36, , 1F

04/03 06:37, , 2F
3.5 好像有說到
04/03 06:37, 2F
文章代碼(AID): #19rJjGo- (Programming)
討論串 (同標題文章)
文章代碼(AID): #19rJjGo- (Programming)