首頁 >後端開發 >C++ >如何在 C 中將成員函數指標傳遞給外部函數?

如何在 C 中將成員函數指標傳遞給外部函數?

Barbara Streisand
Barbara Streisand原創
2024-11-29 06:25:14710瀏覽

How to Pass Member Function Pointers to External Functions in C  ?

將成員函數指標傳遞給外部函數

將成員函數指標作為參數傳遞給外部函數可能很棘手,尤其是在處理類別類型時。這個問題關註一個特定的場景,其中一個類別的成員函數需要傳遞給一個需要成員函數指標的函數。

為了實現這一點,外部函數需要一個指向物件的指標和一個指向成員函數的指標。在給定的程式碼片段中,外部函數 MenuButton::SetButton() 將指向物件的指標作為 ButtonObj,將指向成員函數的指標作為 ButtonFunc。

解決方案包括傳遞物件指標和成員指向 MenuButton::SetButton() 的函式指標。在提供的類別 testMenu 中,建構函式呼叫 x.SetButton(...) 並將 this 作為物件指標傳遞,將 test2 作為成員函數指標傳遞。這確保了當外部函數被呼叫時,它可以存取該物件及其成員函數。

下面是修改後的程式碼:

testMenu::testMenu()
  :MenuScreen("testMenu")
{
  x.SetButton(100,100,TEXT("buttonNormal.png"), TEXT("buttonHover.png"),
        TEXT("buttonPressed.png"), 100, 40, this, &testMenu::test2);
  draw = false;
}

在外部函數MenuButton::SetButton 中(),可以使用物件指標和成員函數指標來呼叫成員函數,使用語法(( ButtonObj)->*(ButtonFunc))();.

以上是如何在 C 中將成員函數指標傳遞給外部函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn