一、问题描述
对于一个新下载项目,在catkin_make时报错如下:error: expected constructor, destructor, or type conversion before ‘(’ token
二、解决办法:
按照error:
前的路径找到报错代码位置,
并将如下代码
PLUGINLIB_DECLARE_CLASS(so3_control, SO3ControlNodelet, SO3ControlNodelet,
nodelet::Nodelet);
改为
PLUGINLIB_EXPORT_CLASS(SO3ControlNodelet, nodelet::Nodelet)
即可正常编译。
不过,需要说明的是,暂时还不清楚这样会带来什么问题,因为直接删除报错句子好像也可以正常编译。
后续再观察下…
大佬的解释是 “建议不要用:PLUGINLIB_DECLARE_CLASS
,以PLUGINLIB_EXPORT_CLASS
替换。其中PLUGINLIB_DECLARE_CLASS
的参数为4个,而PLUGINLIB_EXPORT_CLASS
的参数为两个”。
参考博客:
https://blog.csdn.net/lowbob/article/details/108909168
https://blog.csdn.net/ABC_ORANGE/article/details/111572446