首页 >后端开发 >C++ >如何在 C 中将成员函数指针传递给外部函数?

如何在 C 中将成员函数指针传递给外部函数?

Barbara Streisand
Barbara Streisand原创
2024-11-29 06:25:14734浏览

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