[問題] 一般指標轉函數指標

看板C_and_CPP (C/C++)作者 (累人啊....)時間16年前 (2009/12/30 12:20), 編輯推噓6(608)
留言14則, 4人參與, 最新討論串1/3 (看更多)
如題,請問有辦法作到嗎,類似這樣(不過這不是實際的程式碼) void fun1(); void fun2(); class abc{ public: int ID; void* funptr; } 依VC++的Thread,參數須指定一個函數指標 則 Thread(&fun1) //thread執行fun1函數,OK 不過若是這樣 void (*a)()=fun1; abc OB; OB.ID=1; OB.funptr=a; Thread(OB.funptr); 這樣便會有錯,我想是因為型別的問題 但我要怎麼樣才能成功執行呢?謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.18.48.28

12/30 12:25, , 1F
可以的
12/30 12:25, 1F

12/30 12:40, , 2F
請問該如何實作呢
12/30 12:40, 2F

12/30 13:08, , 3F
你的fptr宣告寫錯了
12/30 13:08, 3F

12/30 13:10, , 4F
??
12/30 13:10, 4F

12/30 13:12, , 5F
喔喔 我誤會你的意思 你是要把void *當成void (*)()來用
12/30 13:12, 5F

12/30 13:12, , 6F
那就強制轉型就好了..
12/30 13:12, 6F

12/30 13:14, , 7F
Thread( (void(*)())OB.funptr );
12/30 13:14, 7F

12/30 13:16, , 8F
話說那個a是多餘的吧? 直接寫OB.funptr = &fun1;就好
12/30 13:16, 8F
※ 編輯: tyc5116 來自: 163.18.48.28 (12/30 13:18)

12/30 15:13, , 9F
static
12/30 15:13, 9F

12/30 15:15, , 10F
member function實際上第一個參數是this
12/30 15:15, 10F

12/30 15:15, , 11F
所以你要用static function
12/30 15:15, 11F

12/30 15:17, , 12F
抱歉 好像搞錯你的問題了
12/30 15:17, 12F

12/30 15:19, , 13F
應該是 stdcall 的問題
12/30 15:19, 13F

12/30 15:47, , 14F
???
12/30 15:47, 14F
文章代碼(AID): #1BEjKY5u (C_and_CPP)
文章代碼(AID): #1BEjKY5u (C_and_CPP)