C ++ создает потоковую функцию, такую ​​как ROS_INFO_STREAM (var1 << var2 << ...) - PullRequest
0 голосов
/ 10 января 2019

Я работаю с ROS, и моя задача - перенести существующие проекты из ros1 в ros2. В ros1 поток работает как

ROS_INFO_STREAM(String << variable << ...) 

существует, но не в ros2, потому что они еще не реализованы в rclcpp. Моя идея - написать функцию на c ++, которая работает с этими операторами и работает как std :: cout. Но я действительно не знаю, как реализовать такую ​​функцию.

У кого-нибудь есть идея или подход?

Решение : Возможное решение - определить макрос как этот

#define ROS_INFO_STREAM(logger, _msgStream) std::stringstream stream_buffer; stream_buffer << _msgStream; ROS_INFO(logger, stream_buffer.str().c_str());

в отдельном заголовочном файле и включайте его везде, где это необходимо.

...