如何在C 中傳遞成員函數指標
將類別成員函數傳遞給接受成員函數指標的函數時,這是必不可少的提供指向物件的指標和指向函數的指標。
在給定的範例中, MenuButton::SetButton() 函式需要具有特定簽章的函式指標。要傳遞成員函數,您需要提供物件指標 (this) 和成員函數指標。這可以透過修改 MenuButton::SetButton() 來實現,如下所示:
template <class object> void MenuButton::SetButton(int xPos, int yPos, LPCWSTR normalFilePath, LPCWSTR hoverFilePath, LPCWSTR pressedFilePath, int Width, int Height, object *ButtonObj, void (object::*ButtonFunc)()) { BUTTON::SetButton(xPos, yPos, normalFilePath, hoverFilePath, pressedFilePath, Width, Height); this->ButtonObj = ButtonObj; this->ButtonFunc = ButtonFunc; }
現在,SetButton() 函數同時接受物件指標和函數指標作為參數。
中在testMenu 類別中,可以像這樣傳遞成員函數:
testMenu::testMenu() :MenuScreen("testMenu") { x.SetButton(100,100,TEXT("buttonNormal.png"), TEXT("buttonHover.png"), TEXT("buttonPressed.png"), 100, 40, this, &testMenu::test2); draw = false; }
這提供了必要的物件和成員函數指標SetButton() 函數,允許其稍後正確呼叫成員函數。
以上是如何正確傳遞C成員函數指標?的詳細內容。更多資訊請關注PHP中文網其他相關文章!