首页 >后端开发 >C++ >如何正确传递C成员函数指针?

如何正确传递C成员函数指针?

Patricia Arquette
Patricia Arquette原创
2024-12-04 04:50:13915浏览

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn