作者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