Можете ли вы объяснить этот синтаксис: ros :: Rate loop_rate (10); - PullRequest
1 голос
/ 12 июня 2019

Я пытаюсь понять эту строку кода

 ros::Rate loop_rate(10);

Кажется, что создается какой-то объект, однако это похоже на вызов функции, и я не вижу, где назван объект.Что делает эта строка кода?Я понимаю, что loop_rate в ros, но я новичок в 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;
}

1 Ответ

3 голосов
/ 12 июня 2019

Ничего страшного.

На самом деле, это довольно простое объявление переменной.

Тип: ros::Rate, имя loop_rate и единственный аргумент конструктора: 10.

Это немного похоже на вызов функции, но это не так.(Это также выглядит как объявление функции, которое может вызвать проблемы , если вы не будете осторожны!)

Это похоже на:

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

или:

Rectangle rect(10, 5);

или даже:

int x(42);

В случае встроенных модулей многие из нас, как правило, используют вместо этого инициализацию копирования в старом стиле:

int x = 42;

… Хотя это не так выполнимо для большинства типов классов.

Возможно, вам нужно пересмотреть синтаксис объявления в вашей книге C ++ ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...