作者sorryChen (陈扬和)
看板Programming
标题Re: overload operator < 来排序
时间Fri Apr 3 06:25:18 2009
感谢学长详细的解答
但我其实想用现成的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
2F:→ sorryChen:3.5 好像有说到 128.125.87.33 04/03 06:37