gpt4 book ai didi

c++ - 传递对象成员函数作为参数(函数指针)

转载 作者:行者123 更新时间:2023-11-30 05:21:04 24 4
gpt4 key购买 nike

我有一个指向对象“eventHandler”的指针,它有一个成员函数“HandleButtonEvents”:

我这样调用它:

eventHandler->HandleButtonEvents();

现在我想将一个指向类“EventHandler”的成员函数“HandleButtonEvents()”的指针作为参数传递给另一个对象“obj”,就像在这个 Stackoverflow 中一样 example :

ClassXY obj = ClassXY(eventHandler->HandleButtonEvents);

构造函数声明如下:

ClassXY(void(*f)(void));

编译器告诉我:

error : invalid use of non-static member function

我做错了什么?

最佳答案

使用 std::functionstd::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();
}

See here for a live example .

关于c++ - 传递对象成员函数作为参数(函数指针),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40400905/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com