首頁 > 後端開發 > C++ > 如何正確傳遞C成員函數指標?

如何正確傳遞C成員函數指標?

Patricia Arquette
發布: 2024-12-04 04:50:13
原創
878 人瀏覽過

How to Pass C   Member Function Pointers Correctly?

如何在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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板