如何解决std::bind to std::function 转换问题
driver_manager driverManager();
std::function<void(mqtt::const_message_ptr,mqtt::async_client*,callback*,sql::Driver*)> fn = std::bind(&driver_manager::test_callback,&driverManager,std::placeholders::_1,std::placeholders::_2,std::placeholders::_3,std::placeholders::_4);
导致错误:
错误:从'std::_Bind_helper
几个小时以来,我一直试图找出问题所在,这段代码有什么问题?
编辑
driver_manager.hpp
class driver_manager{
public:
driver_manager();
void test_callback(mqtt::const_message_ptr,sql::Driver*);
};
driver_manager.cpp
driver_manager::driver_manager(){
}
void driver_manager::test_callback(mqtt::const_message_ptr msg,mqtt::async_client *client,callback *cb,sql::Driver *driver){
std::cout << "Callback triggered" << std::endl;
}
解决方法
正如@Patrick Roberts 在评论中指出的那样,当需要 driver_manager
的实例时,我试图将函数传递给 std::bind。解决方案是改变
driver_manager driverManager();
到
driver_manager driverManager;
。
有关详细信息,请参阅 [StackOverflow 答案] https://stackoverflow.com/a/9490384/11693641。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。