[問題] virtual static function
virtual 這關鍵字是為了polymorphism
能夠在run-time的時後執行對的derive function
static 這關鍵字冠在function前是為不用產生instance即可使用
從字面上來看這兩者是有點衝突的
事實上,擺在一起也的確會得到一個compiler error
請問有做法可以滿足讓function 又是virtual 又是static嗎?
-----
會有這疑問是因為想要使用<algorithm> 中的sort來排vector
但又需要支援polymorphism 能夠在run-time根據不一樣的條件來換排法
語法是這樣
vector<Data *> v;
...
sort(v.begin(), v.end(), Sorter::cmp);
當中的cmp 想要擁有polymorphism 的功能
網路上似乎沒有解
有人碰過類似的問題嗎?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.124.182.185
推
10/06 16:18, , 1F
10/06 16:18, 1F
我知道怪怪的...但還是得這樣做....
推
10/06 16:18, , 2F
10/06 16:18, 2F
→
10/06 16:19, , 3F
10/06 16:19, 3F
vector內的Data *有很多欄位,user可以根據喜好來選排序的依據
但是不想看到一堆if...else...
所以多型似乎是唯一解?
functor我知道他的用法
事實上我也有用仿函數的方式嘗試過
Sorter *sorter = new Sorter() 或者 new Sorter_Derived()
放入sort內
sort(v.begin(), v.end(), *sorter);
無論是new 哪個instance 都是一樣用Base class的functor 代入
這不是我要的
※ 編輯: Hitmear 來自: 140.124.182.185 (10/06 16:29)
→
10/06 16:51, , 4F
10/06 16:51, 4F
→
10/06 16:51, , 5F
10/06 16:51, 5F
→
10/06 16:51, , 6F
10/06 16:51, 6F
→
10/06 16:54, , 7F
10/06 16:54, 7F
→
10/06 16:55, , 8F
10/06 16:55, 8F
→
10/06 16:56, , 9F
10/06 16:56, 9F
→
10/06 16:57, , 10F
10/06 16:57, 10F
→
10/06 16:57, , 11F
10/06 16:57, 11F
→
10/06 17:00, , 12F
10/06 17:00, 12F
→
10/06 17:00, , 13F
10/06 17:00, 13F
→
10/06 17:01, , 14F
10/06 17:01, 14F
→
10/06 17:44, , 15F
10/06 17:44, 15F
→
10/06 18:09, , 16F
10/06 18:09, 16F
→
10/06 18:10, , 17F
10/06 18:10, 17F
→
10/06 18:15, , 18F
10/06 18:15, 18F
→
10/06 18:15, , 19F
10/06 18:15, 19F
→
10/06 18:16, , 20F
10/06 18:16, 20F
→
10/06 18:16, , 21F
10/06 18:16, 21F
→
10/06 18:17, , 22F
10/06 18:17, 22F
→
10/06 18:19, , 23F
10/06 18:19, 23F
→
10/06 18:19, , 24F
10/06 18:19, 24F
→
10/06 18:20, , 25F
10/06 18:20, 25F
→
10/06 18:21, , 26F
10/06 18:21, 26F
→
10/06 18:22, , 27F
10/06 18:22, 27F
→
10/06 18:23, , 28F
10/06 18:23, 28F
→
10/06 18:23, , 29F
10/06 18:23, 29F
→
10/06 18:25, , 30F
10/06 18:25, 30F
推
10/06 20:37, , 31F
10/06 20:37, 31F
→
10/06 20:38, , 32F
10/06 20:38, 32F
→
10/06 21:06, , 33F
10/06 21:06, 33F
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 4 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章