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

news/2024/4/20 18:54:37/
在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播放器。 …

Windows电脑上的多开软件是否安全?

在Windows电脑上使用多开软件可以让使用者同时运行多个相同或不同的程序,这对于某些需要同时操作多个账号或实例的用户来说非常有用。但是很多人担心使用多开软件是否安全。 多开软件的安全问题主要在于它们可能会破坏操作系统的稳定性和安全性,导致系统…

XXPermissions权限请求框架

官网 项目地址:Github博文地址:一句代码搞定权限请求,从未如此简单 框架亮点 一马当先:首款适配 Android 13 的权限请求框架简洁易用:采用链式调用的方式,使用只需一句代码体积感人:功能在同类…

力扣 -- 322. 零钱兑换(完全背包问题)

参考代码&#xff1a; 未优化代码&#xff1a; class Solution { public:int coinChange(vector<int>& coins, int amount) {int n coins.size();const int INF 0x3f3f3f3f;//多开一行&#xff0c;多开一列vector<vector<int>> dp(n 1, vector<i…

Linux:minishell

目录 1.实现逻辑 2.代码及效果展示 1.打印字符串提示用户输入指令 2.父进程拆解指令 3.子进程执行指令,父进程等待结果 4.效果 3.实现过程中遇到的问题 1.打印字符串的时候不显示 2.多换了一行 3.cd路径无效 4.优化 1.ll指令 2.给文件或目录加上颜色 代码链接 模…

java中@Repository注解的作用?

在Java中&#xff0c;Repository注解是Spring框架提供的一个注解&#xff0c;用于标识数据访问层&#xff08;DAO&#xff09;组件。它的作用主要有两个方面&#xff1a; 表示该类是一个持久化类或数据访问对象&#xff08;DAO&#xff09;&#xff0c;负责与数据库进行交互。R…

【pwn入门】用gdb实现第1个pwn

声明 本文是B站你想有多PWN学习的笔记&#xff0c;包含一些视频外的扩展知识。 有问题的源码 #include <stdio.h> #include <stdlib.h> #include <unistd.h> char sh[]"/bin/sh"; int func(char *cmd){system(cmd);return 0; }int main(){char …

简化数据库操作:探索 Gorm 的约定优于配置原则

文章目录 使用 ID 作为主键数据库表名TableName临时指定表名列名时间戳自动填充CreatedAtUpdatedAt时间戳类型Gorm 采用约定优于配置的原则,提供了一些默认的命名规则和行为,简化开发者的操作。 使用 ID 作为主键 默认情况下,GORM 会使用 ID 作为表的主键: type User st…

十四天学会C++之第二天(函数和库)

1. 函数的定义和调用 在C中&#xff0c;函数是组织和结构化代码的关键工具之一。它们允许您将一段代码封装成一个可重复使用的模块&#xff0c;这有助于提高代码的可读性和维护性。 为什么使用函数&#xff1f; 函数在编程中的作用不可小觑。它们有以下几个重要用途&#xf…

Java - 基本数据类型和封装类型

基本类型有默认值&#xff0c;而包装类型初始为null。然后再根据这两个特性进行分业务使用&#xff0c;在阿里巴巴的规范里所有的POJO类必须使用包装类型&#xff0c;而在本地变量推荐使用基本类型。 Java语言提供了八种基本类型。六种数字类型&#xff08;四个整数型&#xff…

linux下查找文件的相关命令

linux下查找文件的相关命令 运行环境&#xff1a;centos7 参考来源&#xff1a;man、鸟哥入门书籍 一、脚本文件查找&#xff1a;which/type 1. which man手册描述&#xff1a; 返回当前环境可以被执行的文件&#xff08;或链接&#xff09;的路径。搜索PATH变量匹配参数中…

如何在Windows电脑上同时运行多个程序?

在Windows电脑上&#xff0c;通常可以同时运行多个程序&#xff0c;这样可以提高工作效率和方便操作。下面是一些方法可以帮助你在Windows电脑上同时运行多个程序。 一、使用任务栏 任务栏通常位于桌面底部&#xff0c;可以显示正在运行的应用程序。通过点击任务栏上的应用程…

使用WPS自动化转换办公文档: 将Word, PowerPoint和Excel文件转换为PDF

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…