问题描述
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。