c++ - 你能解释一下这个语法吗:ros::Rate loop_rate(10);

标签 c++ syntax ros

我试图理解这行代码

 ros::Rate loop_rate(10);

它似乎在创建某种对象,但这看起来像是一个函数调用,我看不到对象的命名位置。这行代码在做什么? ros中的loop_rate是什么我明白了,但是我是c++新手,不懂语法。

#include "ros/ros.h"
#include "std_msgs/String.h"
#include <sstream>

int main(int argc, char **argv)
{
  ros::init(argc, argv, "talker");

  ros::NodeHandle n;

  ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter", 1000);

  ros::Rate loop_rate(10);



  int count = 0;
  while (ros::ok())
  {
    std_msgs::String msg;

    std::stringstream ss;
    ss << "hello world " << count;
    msg.data = ss.str();

    ROS_INFO("%s", msg.data.c_str());

    chatter_pub.publish(msg);

    ros::spinOnce();

    loop_rate.sleep();
    ++count;
  }


  return 0;
}

最佳答案

这没什么不好的。

事实上,这是一个非常简单的变量声明。

类型是ros::Rate,名称是loop_rate,唯一的构造函数参数是10

它看起来确实有点像函数调用,但它不是函数调用。 (它看起来也有点像一个函数声明,如果你不小心的话,它是 can cause problems!)

就像:

std::string str("Hi!");

或:

Rectangle rect(10, 5);

甚至:

int x(42);

在内置函数的情况下,我们中的许多人倾向于使用旧式的复制初始化:

int x = 42;

…尽管这对于大多数类类型来说不太可行。

您是否可能需要查看 your C++ book 中的声明语法? ?

关于c++ - 你能解释一下这个语法吗:ros::Rate loop_rate(10);,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56565275/

相关文章:

build - 崇高文本3 : how to create a build system?

c++ - 动态内存的初始化c++

c++ - std::map 可以移动包含的元素吗?

c++ - 将虚函数添加到类声明的末尾可以避免二进制不兼容?

python - "td"循环之前的 "for"

swift - Swift 什么时候需要参数标签?

c++ - 获取当前像素后面的像素

python - 如何在 Python 中更好地控制循环增量?

python - rs-convert 不从 rosbag 文件生成 .ply 文件

python - PyCharm 在使用 Docker 解释器时找不到 python 依赖项