C++ 你能解释一下这个语法吗:ros::Rate loop\u Rate(10);

C++ 你能解释一下这个语法吗:ros::Rate loop\u Rate(10);,c++,syntax,ros,C++,Syntax,Ros,我正在努力理解这行代码 ros::Rate loop_rate(10); 它似乎在创建某种类型的对象,但是这看起来像一个函数调用,我看不出对象的名称在哪里。这行代码在做什么?我知道ROX中的Loop-Relf是什么,但是我对C++是新的,不理解语法。 #include "ros/ros.h" #include "std_msgs/String.h" #include <sstream> int main(int argc, char **argv) { ros::init(

我正在努力理解这行代码

 ros::Rate loop_rate(10);
它似乎在创建某种类型的对象,但是这看起来像一个函数调用,我看不出对象的名称在哪里。这行代码在做什么?我知道ROX中的Loop-Relf是什么,但是我对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/ros.h”
#包括“标准msgs/String.h”
#包括
int main(int argc,字符**argv)
{
ros::init(argc,argv,talker);
ros::nodehandlen;
出版商chatter_pub=n.广告(“chatter”,1000);
ros:速率环_速率(10);
整数计数=0;
while(ros::ok())
{
std_msgs::String msg;
std::stringstream-ss;
ss这不是什么邪恶的事

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

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

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

就像:

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

甚至:

int x(42);
在内置的情况下,我们中的许多人倾向于使用老式的副本初始化:

int x = 42;
…尽管这对于大多数类类型来说并不太可行


您可能需要查看中的声明语法吗?

Rate
是包含在
ros/ros.h
中的一种类型,用于为任务指定特定的时间段

因此,它被写为:

ROS:: Rate variable_name(time_delay_HZ); 
您可以为他们给定的变量指定任何名称
loop\u rate
,也可以以
HZ
的形式指定任何时间延迟(
10HZ=100ms

ROS:: Rate variable_name(time_delay_HZ);