看板 C_and_CPP 關於我們 聯絡資訊
在某一個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)
QQ29:http://0rz.tw/bUcG9 希望對你有幫助 09/02 22:35
dendrobium:f1(a,b,c); f2(a,b,c); 09/02 22:39
kkroy:樓上...還是一樣compiler不給過 09/02 22:43
Cloud:如果你宣告為static,那就可以用一般的函式指標表示 09/02 22:48
kkroy:樓上...這樣好像也不行呢! 09/02 22:52
kkroy:因為其實文中的foo(), aaa(), bbb()其實會用到A其他 09/02 22:53
kkroy:public裡面的member function,只是文中沒寫出來。 09/02 22:53
※ 編輯: kkroy 來自: 140.113.144.17 (09/02 23:00)
Cloud:這樣就無法宣告為static,乖乖的把一樓的文章看過吧 09/02 22:59
dendrobium:把aaa和bbb改成friend 09/02 23:01
kkroy:回樓上,1F的看完了,不過對於我的問題似乎沒有幫助... 09/02 23:02