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);