作者kkroy (大猪小猪肉一斤)
看板C_and_CPP
标题[问题] 求助 class 内的function pointer用法
时间Wed Sep 2 22:18:54 2009
在某一个class内宣告四个public的member function像降:
class A{
.......
public:
void Do(void);
void foo(int a, int b, int c,
void (*f1)(int,int,int), void (*f2)(int,int,int) );
void aaa(int, int, int);
void bbb(int, int, int);
}
void A::foo(int a, int b, int c,
void (*f1)(int,int,int), void (*f2)(int,int,int) ){
...........
(*f1)(a,b,c);
(*f2)(a,b,c);
}
其中,aaa, bbb 已经写好,此略。
void A::Do(void){
............
int a = 1, b = 2, c = 3;
foo(a, b, c, aaa, bbb);
}
最後,我在main里面执行,compiler不给我过。
void main(){
A TEST;
TEST.Do();
}
显示如下:
error C3867: 'A::aaa': 函式呼叫遗漏引数清单,请用 '&A::aaa' 建立成员的指标
error C3867: 'A::bbb': 函式呼叫遗漏引数清单,请用 '&A::bbb' 建立成员的指标
之後,我在Do()内呼叫foo时,
parameters加上&A::aaa、&A::bbb
compiler还是不给过,请各位高手指点一下,
到底哪边出了问题,谢谢!
p.s. 补充一下喔,如果我把Do()定义中,呼叫foo()的动作拿掉,
Compiler会过。所以我猜是不是我在DO()里面呼叫foo()时,
有什麽动作做错?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.144.17
※ 编辑: kkroy 来自: 140.113.144.17 (09/02 22:19)
2F:推 dendrobium:f1(a,b,c); f2(a,b,c); 09/02 22:39
3F:→ kkroy:楼上...还是一样compiler不给过 09/02 22:43
4F:→ Cloud:如果你宣告为static,那就可以用一般的函式指标表示 09/02 22:48
5F:→ kkroy:楼上...这样好像也不行呢! 09/02 22:52
6F:→ kkroy:因为其实文中的foo(), aaa(), bbb()其实会用到A其他 09/02 22:53
7F:→ kkroy:public里面的member function,只是文中没写出来。 09/02 22:53
※ 编辑: kkroy 来自: 140.113.144.17 (09/02 23:00)
8F:→ Cloud:这样就无法宣告为static,乖乖的把一楼的文章看过吧 09/02 22:59
9F:→ dendrobium:把aaa和bbb改成friend 09/02 23:01
10F:→ kkroy:回楼上,1F的看完了,不过对於我的问题似乎没有帮助... 09/02 23:02