南京小卤蛋 2022-07-19 22:07
浏览 20
已结题

C++中在使用ROS和namespace过程遇到的关于在namespace中无法声明某些变量的问题

问题描述

在学习ros使用的过程中遇到一个问题,我希望在一个namespace中使用std_msgs::String类型变量,但是意外得发现直接在命名空间中声明这个变量会导致无法识别,并且编译的时候会报错,具体的代码如下

#include "ros/ros.h"
#include "std_msgs/String.h"
#include <sstream>
  namespace newspace{
    std_msgs::String msg;
    msg;
  }
int main(int argc, char **argv)
{
  ros::init(argc, argv, "talker");
  ros::NodeHandle n;
//省略部分main函数代码,省略部分代码已经经过验证,不会造成错误
}

报错内容

/home/cw/catkin_ws/src/beginner_tutorials/src/talker.cpp:11:5: error: ‘msg’ does not name a type
   11 |     msg;
      |     ^~~
make[2]: *** [beginner_tutorials/CMakeFiles/talker.dir/build.make:63:beginner_tutorials/CMakeFiles/talker.dir/src/talker.cpp.o] 错误 1
make[1]: *** [CMakeFiles/Makefile2:2274:beginner_tutorials/CMakeFiles/talker.dir/all] 错误 2
make: *** [Makefile:141:all] 错误 2
Invoking "make -j8 -l8" failed

我想过这个是不是因为命名空间之间的嵌套问题导致的,但是查阅了C++Primer Plus中对于命名空间的解释也没有得到答案,希望有了解ROS和C++的朋友能够不吝赐教,帮忙答疑一下,或者能够提醒我一下这个问题大概是出在了哪里。

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 7月27日
    • 创建了问题 7月19日

    悬赏问题

    • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
    • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
    • ¥15 手机接入宽带网线,如何释放宽带全部速度
    • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
    • ¥15 ETLCloud 处理json多层级问题
    • ¥15 matlab中使用gurobi时报错
    • ¥15 这个主板怎么能扩出一两个sata口
    • ¥15 不是,这到底错哪儿了😭
    • ¥15 2020长安杯与连接网探
    • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么