Re: [問題] virtual static function

看板C_and_CPP作者 (屍殌化液)時間13年前 (2010/10/07 14:17), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/4 (看更多)
: class BaseComparator : { : public : : virtual bool operator () (Data *, Data *) = 0; : }; : class ColumnOneComparator : public BaseComparator : { : public: : bool operator () (Data *a, Data *b) : { : return a->ColumnOne < b->ColumnOne; : } : }; : class ColumnTwoComparator : public BaseComparator : { : public: : bool operator () (Data *a, Data *b) : { : return a->ColumnTwo < b->ColumnTwo; : } : }; : class CompositeComparator : { : BaseComparator *C; 改成pointer : public: : CompositeComparator(BaseComparator *c):C(c){} : bool operator ()(Data *a, Data *b){return (*C)(a,b);} 相對應的改變 : }; : void LetMeSortThatForYou(vector<Data *> &v, BaseComparator *c) : { : sort(v.begin(), v.end(), CompositeComparator(c)); : } : ///////// 經過測試是OK的 不過做了點修改 畢竟如果不是pointer的宣告 compiler會不給過 BaseComparator *cmp = new ColumnTwoComparator(); LetMeSortThatForYou(v, cmp); Terminal: 39, 0.22 85, 0.25 7, 0.55 32, 0.73 53, 0.9 BaseComparator *cmp = new ColumnOneComparator(); LetMeSortThatForYou(v, cmp); Terminal: 7, 0.55 32, 0.73 39, 0.22 53, 0.9 85, 0.25 測試成功 polymorphism的部分也很正確 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.124.182.185
文章代碼(AID): #1ChMNdg4 (C_and_CPP)
文章代碼(AID): #1ChMNdg4 (C_and_CPP)