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


    在ros2的发布者节点里面有这么一句话:估计没有学过C++的人不太理解,这里我就发发好心帮忙解读一下
    
    1. timer_ = this->create_wall_timer(
    2. 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));

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

  • 相关阅读:
    axios的安装使用
    LeetCode75——Day30
    PLC中ST编程的定时器
    SpringCloud:Feign实现微服务之间相互请求
    素数筛法代码-总结(Python,C++)
    阿里云开发者社区有奖征文活动,期待您出文相助
    单片机之硬件记录
    【Java实战】Mysql读写分离主从复制搭建保姆级教程
    Mojo安装使用初体验
    git 常用命令
  • 原文地址:https://blog.csdn.net/geniusChinaHN/article/details/133529488