(C++版)ROS2 bind函数解读

news/2025/1/18 12:36:07/
在ros2的发布者节点里面有这么一句话:估计没有学过C++的人不太理解,这里我就发发好心帮忙解读一下
timer_ = this->create_wall_timer(500ms, std::bind(&MinimalPublisher::timer_callback, this));
timer_ = this->create_wall_timer(500ms, std::bind(&MinimalPublisher::timer_callback, this));

首先create_wall_timer(param1,param2)这个函数的用法是:

第一次参数param1是多少时间间隔执行一次param2函数,默认单位是ms毫秒,你可以填写500ms,或者1s,(好像1s也可以);

第二个参数是一个函数名称;

        首先:bind本来就是一个函数,所以这参数肯定可以看出来是一个函数了,这个函数的格式是:

bind(函数名称,参数列表);

假设不用这个函数,就没有办法在这个地方往timer_callback函数传递参数了。

我只要告诉你this是timer_callback的隐含参数,你就全明白了哈哈哈哈,一般来说一个函数括号里面的那些参数是显式参数例如fun1(int a,int b),这个a,b都是显示参数,但是在处理类的成员函数的时候,还有隐含参数,那就是类的对象,一个成员函数只有指定了类的对象,这个时候成员变量确定了,成员函数才会是唯一的。

        一般而言这个参数是this,例如this->timer_callback(),但是也可以是其他类的对象,例如

class mynode::public rclcpp::Node{    };

mynode node1,node2;

既可以是timer_ = this->create_wall_timer( 500ms, std::bind(&MinimalPublisher::timer_callback, this));

也可以是timer_ = this->create_wall_timer( 500ms, std::bind(&MinimalPublisher::timer_callback, &node1));

也可以是timer_ = this->create_wall_timer( 500ms, std::bind(&MinimalPublisher::timer_callback, &node2));

好了虽然我说不清,但是相信你已经明白了,我实在是看到全国没有这方面的文章啊


http://www.ppmy.cn/news/1134801.html

相关文章

HPA (Horizontal Pod Autoscaler) In K8s

城市红绿灯智能调节 没准正在建设中哈哈哈 作为一位城市观察者和设计师,我想借助Kubernetes的HPA机制思想来描述城市红绿灯自动调节的场景。 在这个故事中,我们的城市面临着日益增长的交通流量和挤塞问题。为了应对这一挑战,城市决定引入智能…

mysql面试题7:MySQL事务原理是什么?MySQL事务的隔离级别有哪些?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:MySQL事务原理是什么? MySQL事务的原理是基于ACID(原子性、一致性、隔离性、持久性)特性来实现的,具体原理如下: Atomicity(原子性):事务…

在Windows电脑上用多开器玩网络游戏的技巧

如果你喜欢在Windows电脑上玩网络游戏,在同一时间内打开多个游戏账号可能会让你疑惑。但是,通过使用多开器,你可以同时在同一台电脑上打开多个游戏账号。以下是使用多开器玩网络游戏的技巧。 1.选择一个好的多开器 有很多免费或付费的多开器…

宠物医院必备,介绍一款宠物疫苗接种管理软件

在当今社会,养宠物已经成为越来越多人的生活方式,宠物疫苗接种已是宠物医院的重要工作,但是目前绝大多数的宠物医院对疫苗接种的管理,还是采取人工登记方式,不仅效率低下,而且无法做到疫苗接种到期自动提醒…

十四天学会C++之第三天(数组和字符串)

1. 数组的定义和初始化 数组是一种由相同数据类型的元素组成的集合,这些元素按照一定的顺序存储在连续的内存位置上。数组的大小在创建时是固定的,无法在运行时改变。 在C中,数组的定义和声明非常简单。定义一个数组: 数据类型…

LabVIEW开发带式谱感测技术

LabVIEW开发带式谱感测技术 如今,通过无线网络传输的数据量正在迅速增加,并导致频谱稀缺。超过数十亿的无线设备将被连接起来,并需要互联网接入。因此,无线电频谱管理方案的效率不足以授予对所有设备的访问权限。在频谱分配中&am…

Java计算Date类相距天数、月数、年数、直接获取年月日

计算Date类相距天数、月数、年数、直接获取年月日 Java中如何计算两个时间Date类像距离的天数 在Java中,您可以使用java.util.Date类来计算两个日期之间的天数差异。以下是一个简单的示例代码,演示如何计算两个日期之间的天数差异: import…

ffmpeg概述

相关网址 官网官网下载页面下载build页面github下载SDL githubSDL Wikix264 githubmsys2官网 编译 ffmpeg编译可以有很多东西,你可以添加需要的扩展,笔者这里只按照笔者的需求来添加。 笔者编译的版本,x264扩展,ffplay播放器。 …