→ tyc5116:今天認真的看了一下這兩個關鍵字的說明,後來就弄出來了 08/04 22:42
※ 引述《tyc5116 (累人啊....)》之銘言:
: 對於最後一個fuction pointer的參數,我也不知道要如何宣告,
: 是照著compile的錯誤訊息,依樣畫葫蘆拼出來的
: 只是拼出來結果又跑出undefined symbol的錯誤
: 看書上有說functor可取代function pointer的作法,但我不會用....
查了一下OnClick的型態應該是這樣
void TPanel::OnClick(__fastcall * (__closure)(TObject * ))(TObject *)
這是它自己跳出下拉式選單所顯示的
開了小程式測試了一下function pointer,
覺得我的觀念應該是沒有錯啊(還是自我感覺良好?)
起手式是像這樣吧
void (*func)() //宣告一個名為func的function pointer,不帶參數,不回傳值
照著這個去變化,compile就不會過(卡在bcb還有__fastcall和__closure)
後來我簡化了一下(其實意思也差不多),暫時忽略bcb的關鍵字
void (*func)() = _Data.m_No[j]->OnClick ;
用來測試compile會不會過,跳出錯誤
Cannot convert 'void (_fastcall * (_closure )(TObject *))(TObject *)' to
'void (*)(TObject *)'
所以就著照著改
void (__fastcall* (__closure)func)(TObject*) =
_CutDataVCL.m_palAdjustX[j]->OnClick;
or
void (__fastcall* (__closure)(TObject*)func)(TObject*) =
_CutDataVCL.m_palAdjustX[j]->OnClick;
跳出
Expression syntax
不知道該怎麼改才對?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.249.10.29