[問題] 求助 class 內的function pointer用法

看板C_and_CPP (C/C++)作者 (大豬小豬肉一斤)時間16年前 (2009/09/02 22:18), 編輯推噓2(208)
留言10則, 4人參與, 最新討論串1/6 (看更多)
在某一個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)

09/02 22:35, , 1F
http://0rz.tw/bUcG9 希望對你有幫助
09/02 22:35, 1F

09/02 22:39, , 2F
f1(a,b,c); f2(a,b,c);
09/02 22:39, 2F

09/02 22:43, , 3F
樓上...還是一樣compiler不給過
09/02 22:43, 3F

09/02 22:48, , 4F
如果你宣告為static,那就可以用一般的函式指標表示
09/02 22:48, 4F

09/02 22:52, , 5F
樓上...這樣好像也不行呢!
09/02 22:52, 5F

09/02 22:53, , 6F
因為其實文中的foo(), aaa(), bbb()其實會用到A其他
09/02 22:53, 6F

09/02 22:53, , 7F
public裡面的member function,只是文中沒寫出來。
09/02 22:53, 7F
※ 編輯: kkroy 來自: 140.113.144.17 (09/02 23:00)

09/02 22:59, , 8F
這樣就無法宣告為static,乖乖的把一樓的文章看過吧
09/02 22:59, 8F

09/02 23:01, , 9F
把aaa和bbb改成friend
09/02 23:01, 9F

09/02 23:02, , 10F
回樓上,1F的看完了,不過對於我的問題似乎沒有幫助...
09/02 23:02, 10F
文章代碼(AID): #1AddxF30 (C_and_CPP)
文章代碼(AID): #1AddxF30 (C_and_CPP)