gpt4 book ai didi

c++ - 将成员函数绑定(bind)到函数对象

转载 作者:搜寻专家 更新时间:2023-10-31 01:09:42 24 4
gpt4 key购买 nike

我正在尝试为某些信号设置信号处理程序:

std::function<void(int)> signalHandlerCallback;

MyApp app;
signalHandlerCallback = std::bind(std::mem_fn(&MyApp::SignalHandler, &app, std::placeholders::_1)); // *

// ...
class MyApp
{
public:
void SignalHandler(int signum);
};

并且编译器产生以下错误(在行 *):

test.cpp:53:111: error: no matching function for call to 'mem_fn(void (MyApp::*)(int), MyApp*, const std::_Placeholder<1>&)'

如果我不指定占位符,也会出现同样的错误。

那么在这种情况下如何将成员函数绑定(bind)到 std::function 呢?

提前致谢。

最佳答案

你不需要std::mem_fn。只需这样重写即可:

signalHandlerCallback = std::bind(&MyApp::SignalHandler, &app, std::placeholders::_1);

关于c++ - 将成员函数绑定(bind)到函数对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16740946/

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