作者vincere (vin)
看板EE_DSnP
標題[問題] hw1.2.p3b
時間Sat Oct 8 22:46:35 2011
不好意思想要請問一下
因為我一開始在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
1F:推 alextan:應該是漏了parameter 10/08 22:49
2F:推 simpdanny:Less()() 前一個括號呼叫constructor 10/08 22:50
3F:→ simpdanny:後一個括號讓他變成functional object 10/08 22:50
4F:→ djshen:是要寫constructor? 10/08 22:54
5F:推 nfprzkuma:跟我一樣的錯耶(握手) 是base的funct第二個括號漏參數 10/08 22:54
6F:→ vincere:感謝~ 剛一直很不確定constructor是要從哪裡呼叫 10/08 22:55
7F:→ nfprzkuma:base和derived的virtual func prototype要一模一樣 10/08 22:55
8F:→ nfprzkuma:包括參數列表 10/08 22:56
9F:→ djshen:Compare沒寫參數應該是會出現abstract class之類的吧? 10/08 22:57
10F:推 nfprzkuma:abstract class是因為加上"=0" 代表pure virtual func 10/08 23:00
11F:→ nfprzkuma:class中只要有任何func是pure virtual func該class就是 10/08 23:00
12F:→ nfprzkuma:abstract class 10/08 23:01
13F:→ djshen:Compare沒寫參數但Less有寫 兩個是不一樣的函數 所以Less 10/08 23:02
14F:→ djshen:會不能產生object 10/08 23:02
15F:→ vincere:想要請教一下 如果是第一個括號呼叫constructor的話 不是 10/08 23:04
16F:→ vincere:很清楚說參數是放在第二個括號裡 10/08 23:04
17F:推 nfprzkuma:恩 樓上講得有道理 10/08 23:05
18F:→ nfprzkuma:說錯了是樓樓上 樓上是在問程式哪邊呼叫ctor? 10/08 23:07
19F:→ djshen:我試不出原PO那種錯誤訊息耶.. 10/08 23:15
20F:→ vincere:我是想問說她的construtor是從第一個括號呼叫 然後參數再 10/08 23:18
21F:→ vincere:由第二個傳入? 10/08 23:18
22F:→ vincere:回樓上 第一個問題解決了 可是還是會出現no matching 10/08 23:19
23F:推 nfprzkuma:真的嗎 我只要把()裡的參數列表刪掉 就會看到41行 10/08 23:19
24F:→ nfprzkuma:no match for call to '(const Compare)(int&..... 10/08 23:19
25F:→ vincere:function to call to 'Less::Less()' 10/08 23:19
26F:推 ric2k1:說明白一點,Compare 的 operator () 應該要定義成: 10/08 23:21
27F:→ ric2k1:bool operator () (int, int) const = 0; 10/08 23:21
28F:→ ric2k1:你應該是忘了加參數... 10/08 23:22
29F:→ nfprzkuma:如果是在問Less()的話 應該不需要參數吧 事實上Less沒有 10/08 23:22
30F:→ nfprzkuma:寫constructor的必要 10/08 23:22
31F:推 ric2k1:嗯,constructor 應該是沒有參數。但是應該可以不用寫 10/08 23:22
32F:推 ric2k1:constructor 吧! 10/08 23:23
33F:→ ric2k1:反正也沒有 data members, 寫 constructor 也沒有意義。 10/08 23:23
34F:→ djshen:constructor可寫可不寫 試過了 10/08 23:25
35F:→ vincere:感謝大家的解惑 問題終於解決了 小弟class觀念太薄弱 10/08 23:54
36F:推 ric2k1:沒問題,下星期三大家一起來好好複習一下 class!! 10/08 23:55