[英]Pass an objects member function as argument (function pointer)
我有一个指向对象 'eventHandler' 的指针,它有一个成员函数 'HandleButtonEvents':
我这样称呼它:
eventHandler->HandleButtonEvents();
现在,我想将指向类“EventHandler”的成员函数“HandleButtonEvents()”的指针作为参数传递给另一个对象“obj”,例如在此 Stackoverflow 示例中:
ClassXY obj = ClassXY(eventHandler->HandleButtonEvents);
构造函数声明如下:
ClassXY(void(*f)(void));
编译器告诉我:
错误:非静态成员函数的无效使用
我究竟做错了什么?
按照我的评论中的建议使用std::function
和std::bind
使其变得非常容易:
#include <iostream>
#include <functional>
class ClassXY
{
std::function<void()> function;
public:
ClassXY(std::function<void()> f)
: function(f)
{}
void call()
{
function(); // Calls the function
}
};
class Handler
{
public:
void HandleButtonEvent()
{
std::cout << "Handler::HandleButtonEvent\n";
}
};
int main()
{
Handler* handler = new Handler;
ClassXY xy(std::bind(&Handler::HandleButtonEvent, handler));
xy.call();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.