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

news2025/1/12 3:44:14
在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.coloradmin.cn/o/1058445.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

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

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

BP神经网络的MATLAB实现(含源代码)

BP(back propagation)神经网络是1986年由Rumelhart和McClelland为首的科学家提出的概念,是一种按照误差逆向传播算法训练的多层前馈神经网络,是应用最广泛的神经网络模型之一 具体数学推导以及原理在本文不做详细介绍,本文将使用MATLAB进行B…

ASUS (k013) ME176CX不进入系统恢复出厂设置的方法

k013 me176cx ASUS k013 ME176CX不进入系统恢复出厂设置的方法 当忘记系统密码或系统异常导致无法进入系统时,可以按以下步骤尝试不进入系统恢复出厂设置来解决。 注意:执行恢复出厂设置前,请先将资料备份至外接设备,否则资料都…

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

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

基于被囊群优化的BP神经网络(分类应用) - 附代码

基于被囊群优化的BP神经网络(分类应用) - 附代码 文章目录 基于被囊群优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.被囊群优化BP神经网络3.1 BP神经网络参数设置3.2 被囊群算法应用 4.测试结果&#x…

实验四 内核线程管理-实验部分

目录 一、知识点 1.进程 1.1.进程定义 1.2.内存中的进程 1.3.进程的组成 1.4.进程的特点 1.5.进程与程序的联系 1.6.进程与程序的区别 2.进程控制块 2.1.进程控制块的使用 2.2.进程控制信息 2.3.进程控制块的组织 3.线程 3.1.为什么引入线程? 3.2.线…

XXPermissions权限请求框架

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

智慧公厕整体解决方案,厕所革命实施方案的范本

随着城市化进程的不断加快,智慧城市应用正成为未来城市发展的重要方向。其中,智慧公厕作为城市基础设施的重要组成部分,其建设范本已经成为各建设中的智慧城市不可或缺的重要内容。那么,如何打造智慧公厕整体解决方案?…

C语言判断语句

判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。 C 语言把任何非零和非空的值假定为 true,把零或 null 假定为 false。 下面…

【C++】设计模式之——建造者

建造者模式概念模拟实现建造者模式代码实现 建造者模式 首先先大体了解一下,建造者模式是什么意思,它是怎么实现的? 首先,建造者模式是一种创建型设计模式再一个它是使用多个简单的对象一步一步的搭建出一个复杂的对象它可以将一个…

【已解决】RuntimeError Java gateway process exited before sending its port number

RuntimeError: Java gateway process exited before sending its port number 问题 思路 🎯方法一 在代码前加入如下代码(如图): import os os.environ[‘JAVA_HOME’] “/usr/local/jdk1.8.0_221” # 记得把地址改成自己的 …

MQTT 服务器搭建(基于mosquitto)

1、前言 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,…

【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 …

3.Tensors For Beginners- Forward and Backward Transformations

张量在不同坐标系之间来回移动的规则究竟如何。 之前说过&#xff0c;张量在坐标系变化下是不变的&#xff0c;故了解如何在坐标系之间来回移动对理解张量很重要。 Forward&#xff1a;旧基 到 新基 old basis&#xff1a;旧基 这是在二维坐标系下的两组基。 线性代数中的基…

MySQL面试题合集

MySQL面经知识整理 文章目录 MySQL面经知识整理一、查询相关1.什么是MySQL的连接查询&#xff0c;左连接&#xff0c;右连接&#xff0c;内外连接2.SQL慢查询优化的方法3.大表查询如何优化 二、索引相关1.在MySQL中,可以通过哪些命令来查看查询是否使用了索引2.MySQL的最左匹配…

软件测试教程 自动化测试selenium篇(二)

掌握Selenium常用的API的使用 一、webdriver API public class Main {public static void main(String[] args) {ChromeOptions options=new ChromeOptions();//参数表示允许所有请求options.addArguments("--remote-allow-origins=*");WebDriver webDriver=new Chr…

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

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

力扣-350.两个数组的交集||

Idea 首先遍历第一个数组&#xff0c;用哈希表存储每个数字及其出现的次数。 然后遍历第二个数组&#xff0c;每出现重复的数字&#xff0c;并判断该数字在哈希表的次数是不是大于0&#xff0c;如果大于则存入答案数组&#xff0c;并将哈希表次数减1&#xff0c;直接遍历结束。…

微信公众号开发基本流程(记录初级流程)

微信公众号开发基本流程 一、注册公众号二、了解公众号管理页面三、必备开发者工具的使用1. 开发者文档2. 在线接口调试工具3. Web开发者工具4. 公众平台测试账号 四、细读开发者文档五、开发流程重点解析1. 开发环境准备2. 服务器基本配置3. 存取access_token参数4. 公众号消息…

第一百六十二回 PopupMenuButton组件

文章目录 概念介绍使用方法示例代码 我们在上一章回中介绍了Sliver综合示例相关的内容&#xff0c;本章回中将介绍 PopupMenuButton组件.闲话休提&#xff0c;让我们一起Talk Flutter吧。 概念介绍 我们在本章回中介绍的PopupMenuButton组件位于AppBar右侧&#xff0c;通常显…