看板 EE_DSnP 關於我們 聯絡資訊
不好意思想要請問一下 因為我一開始在base class中有定義 virtual bool operator()() const=0; 並且定義完Less, Greater兩個class以及 void selectionSort (vector<int>& array, const Compare& compare); 可是在call selectionSort(array,Less())時 卻一直出現error: no match for call to '(const Compare&)' no matching function for call to 'Less::Less()'等訊息 想問一下繼承的class應該是可以override 不知道我哪些細節沒有注意到 感謝大家的回答~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.231.8.153
alextan:應該是漏了parameter 10/08 22:49
simpdanny:Less()() 前一個括號呼叫constructor 10/08 22:50
simpdanny:後一個括號讓他變成functional object 10/08 22:50
djshen:是要寫constructor? 10/08 22:54
nfprzkuma:跟我一樣的錯耶(握手) 是base的funct第二個括號漏參數 10/08 22:54
vincere:感謝~ 剛一直很不確定constructor是要從哪裡呼叫 10/08 22:55
nfprzkuma:base和derived的virtual func prototype要一模一樣 10/08 22:55
nfprzkuma:包括參數列表 10/08 22:56
djshen:Compare沒寫參數應該是會出現abstract class之類的吧? 10/08 22:57
nfprzkuma:abstract class是因為加上"=0" 代表pure virtual func 10/08 23:00
nfprzkuma:class中只要有任何func是pure virtual func該class就是 10/08 23:00
nfprzkuma:abstract class 10/08 23:01
djshen:Compare沒寫參數但Less有寫 兩個是不一樣的函數 所以Less 10/08 23:02
djshen:會不能產生object 10/08 23:02
vincere:想要請教一下 如果是第一個括號呼叫constructor的話 不是 10/08 23:04
vincere:很清楚說參數是放在第二個括號裡 10/08 23:04
nfprzkuma:恩 樓上講得有道理 10/08 23:05
nfprzkuma:說錯了是樓樓上 樓上是在問程式哪邊呼叫ctor? 10/08 23:07
djshen:我試不出原PO那種錯誤訊息耶.. 10/08 23:15
vincere:我是想問說她的construtor是從第一個括號呼叫 然後參數再 10/08 23:18
vincere:由第二個傳入? 10/08 23:18
vincere:回樓上 第一個問題解決了 可是還是會出現no matching 10/08 23:19
nfprzkuma:真的嗎 我只要把()裡的參數列表刪掉 就會看到41行 10/08 23:19
nfprzkuma:no match for call to '(const Compare)(int&..... 10/08 23:19
vincere:function to call to 'Less::Less()' 10/08 23:19
ric2k1:說明白一點,Compare 的 operator () 應該要定義成: 10/08 23:21
ric2k1:bool operator () (int, int) const = 0; 10/08 23:21
ric2k1:你應該是忘了加參數... 10/08 23:22
nfprzkuma:如果是在問Less()的話 應該不需要參數吧 事實上Less沒有 10/08 23:22
nfprzkuma:寫constructor的必要 10/08 23:22
ric2k1:嗯,constructor 應該是沒有參數。但是應該可以不用寫 10/08 23:22
ric2k1:constructor 吧! 10/08 23:23
ric2k1:反正也沒有 data members, 寫 constructor 也沒有意義。 10/08 23:23
djshen:constructor可寫可不寫 試過了 10/08 23:25
vincere:感謝大家的解惑 問題終於解決了 小弟class觀念太薄弱 10/08 23:54
ric2k1:沒問題,下星期三大家一起來好好複習一下 class!! 10/08 23:55