我试图理解这行代码
ros::Rate loop_rate(10);
Run Code Online (Sandbox Code Playgroud)
它似乎正在创建某种对象,但这看起来像一个函数调用,我看不到对象的名称。这行代码在做什么?我了解 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;
}
Run Code Online (Sandbox Code Playgroud)
这没有什么险恶的。
事实上,这是一个非常简单的变量声明。
类型是ros::Rate,名称是loop_rate,唯一的构造函数参数是10。
它看起来确实有点像函数调用,但它不是。(它也有点像函数声明,一不小心就会出问题!)
就像是:
std::string str("Hi!");
Run Code Online (Sandbox Code Playgroud)
或者:
Rectangle rect(10, 5);
Run Code Online (Sandbox Code Playgroud)
甚至:
int x(42);
Run Code Online (Sandbox Code Playgroud)
对于内置函数,我们中的许多人倾向于使用旧式复制初始化:
int x = 42;
Run Code Online (Sandbox Code Playgroud)
...虽然这对于大多数类类型来说不太可行。
您可能需要查看C++ 书中的声明语法吗?
| 归档时间: |
|
| 查看次数: |
1336 次 |
| 最近记录: |