std::bind(&Runtime_Impl::on_message, this,std::placeholders::_1));
时间: 2024-01-22 07:03:09 浏览: 21
这是一个使用std::bind绑定成员函数的示例代码。其中,&Runtime_Impl::on_message是成员函数的指针,this是成员函数所属的对象指针,std::placeholders::_1是占位符,表示在调用时需要传入一个参数。这行代码的作用是将成员函数on_message绑定到当前对象上,并且在调用时传入一个参数。
相关问题
std::bind(&LocalClientEndpoint::receiveMessageCbk, this, std::placeholders::_1, std::placeholders::_2) 的解释及返回值
这段代码是使用 std::bind 函数将一个成员函数绑定到对象上。其参数解释如下:
- &LocalClientEndpoint::receiveMessageCbk:成员函数的指针。
- this:成员函数所属的对象指针。
- std::placeholders::_1, std::placeholders::_2:表示将在调用时传入的参数。
实际上,std::placeholders::_1 和 std::placeholders::_2 都是占位符,表示成员函数 receiveMessageCbk 期待两个参数。在后续调用时,这两个占位符将被实际参数替换。
返回值是一个可调用对象,该对象可以调用成员函数 receiveMessageCbk,并将 this 指针作为第一个参数,将实际传入的参数作为第二个和第三个参数。这样,在调用返回的可调用对象时,实际上就是调用成员函数 receiveMessageCbk,从而实现了将成员函数绑定到对象上的目的。
// setup UAS and diag mav_uas.set_tgt(tgt_system_id, tgt_component_id); UAS_FCU(&mav_uas) = fcu_link; mav_uas.add_connection_change_handler(std::bind(&MavlinkDiag::set_connection_status, &fcu_link_diag, std::placeholders::_1)); mav_uas.add_connection_change_handler(std::bind(&MavRos::log_connect_change, this, std::placeholders::_1));
这段代码看起来是在设置一个MAVLink的链接,并且将该链接与一些处理程序关联。具体来说:
- `mav_uas.set_tgt(tgt_system_id, tgt_component_id);` 这行代码设置MAVLink连接的目标系统ID和组件ID。
- `UAS_FCU(&mav_uas) = fcu_link;` 这行代码设置MAVLink连接的通信方式(可能是串口、UDP、TCP等)。
- `mav_uas.add_connection_change_handler(std::bind(&MavlinkDiag::set_connection_status, &fcu_link_diag, std::placeholders::_1));` 这行代码将一个处理程序与MAVLink连接关联。当连接状态发生变化时,处理程序`MavlinkDiag::set_connection_status`将被调用,参数`_1`是连接状态。
- `mav_uas.add_connection_change_handler(std::bind(&MavRos::log_connect_change, this, std::placeholders::_1));` 这行代码将另一个处理程序与MAVLink连接关联。当连接状态发生变化时,处理程序`MavRos::log_connect_change`将被调用,参数`_1`是连接状态。
总体来说,这段代码的作用是建立MAVLink连接并且设置一些连接状态处理程序。