Re: overload operator < 來排序
感謝學長詳細的解答
但我其實想用現成的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:36, 1F
→
04/03 06:37, , 2F
04/03 06:37, 2F
討論串 (同標題文章)