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