[問題] 在新的執行緒中呼叫物件的成員函式

看板C_and_CPP (C/C++)作者 (隨興至上)時間16年前 (2009/07/14 23:21), 編輯推噓0(006)
留言6則, 2人參與, 最新討論串1/1
小弟最近在練multithread程式遇到一個問題 之前用C寫的時候 呼叫CreateThread()只要把函數名稱當成參數丟進去就好(應該沒錯吧?XD) 現在想改用C++寫 class Test { void A(); void B(); }; 當呼叫A()時 我希望A()裡面呼叫CreateThread()去做B() 但如果參數直接丟B 會跑出 函式呼叫遺漏引數清單,請用 '&Test::B' 建立成員的指標 可是當我照他說的把 B 改成 &Test::B 後 又會跑出 '&' : 界限成員函式運算式的作業不合法 想請教板上的高手 這個問題該怎麼解決 感謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.167.203.228

07/14 23:36, , 1F
最簡單的方法 把B宣告為static member function
07/14 23:36, 1F

07/14 23:59, , 2F
照j大的方式改過以後 現在錯誤訊息變成
07/14 23:59, 2F

07/14 23:59, , 3F
無法將參數 3 從 'void (__cdecl *)(char *)' 轉換成
07/14 23:59, 3F

07/14 23:59, , 4F
'LPTHREAD_START_ROUTINE' 範圍中沒有符合目標類型的
07/14 23:59, 4F

07/14 23:59, , 5F
函式 (使用此名稱)
07/14 23:59, 5F

07/15 10:24, , 6F
B的傳入參數改成LPVOID lpParam就解決了 感謝!
07/15 10:24, 6F
文章代碼(AID): #1ANA9mjp (C_and_CPP)
文章代碼(AID): #1ANA9mjp (C_and_CPP)