c++ error: expected class-name before '{' token
c++ error: expected class-name before '{' token
screenshot of Pose.hpp
我正在尝试 catkin_make 一个简单的包,但出现错误
.../Pose.hpp:17:1: expected class-name before token...
.../Odometry.cpp:12:3: expected class-name before token...
负责的Pose头文件在这里采样为:
#ifndef POSE_HPP
#define POSE_HPP
#include <string>
#include <vector>
#include <ostream>
#include "ros/serialization.h"
#include "ros/builtin_message_traits.h"
#include "ros/message_operations.h"
#include "ros/message.h"
#include "ros/time.h"
namespace turtle
{//line 17
template <class ContainerAllocator>
struct Pose_ : public ros::Message
{
typedef Pose_<ContainerAllocator> Type;
}; // struct Pose
...
} // namespace turtle
而在odometry.cpp中引用的头文件显示为
#include <geometry_msgs/TwistWithCovarianceStamped.h>
#include <tf/transform_datatypes.h>
#include <robot_localization_demo/odometry.hpp>
namespace robot_localization_demo {
TurtleOdometry::TurtleOdometry(ros::NodeHandle node_handle, double frequency):
node_handle_{node_handle},
turtle_pose_subscriber_{node_handle_.subscribe("turtle1/pose", 16, &TurtleOdometry::turtlePoseCallback, this)},
turtle_twist_publisher_{node_handle_.advertise<geometry_msgs::TwistWithCovarianceStamped>("turtle1/sensors/twist", 16)},
frequency_{frequency},
{//line 12
;
}
里程计也包括姿势。
我在这里错过了什么?
ros::Message
的官方文档说:
This base-class is deprecated in favor of a template-based serialization and traits system.
在 official source code it looks like it's still defined, but in a contrib version I found, the whole class definition 被删除 #if 0
:
namespace ros {
#if 0
class Message {
//
};
#endif
}
所以,您很可能需要找到一个不同的基地 class。
screenshot of Pose.hpp 我正在尝试 catkin_make 一个简单的包,但出现错误
.../Pose.hpp:17:1: expected class-name before token...
.../Odometry.cpp:12:3: expected class-name before token...
负责的Pose头文件在这里采样为:
#ifndef POSE_HPP
#define POSE_HPP
#include <string>
#include <vector>
#include <ostream>
#include "ros/serialization.h"
#include "ros/builtin_message_traits.h"
#include "ros/message_operations.h"
#include "ros/message.h"
#include "ros/time.h"
namespace turtle
{//line 17
template <class ContainerAllocator>
struct Pose_ : public ros::Message
{
typedef Pose_<ContainerAllocator> Type;
}; // struct Pose
...
} // namespace turtle
而在odometry.cpp中引用的头文件显示为
#include <geometry_msgs/TwistWithCovarianceStamped.h>
#include <tf/transform_datatypes.h>
#include <robot_localization_demo/odometry.hpp>
namespace robot_localization_demo {
TurtleOdometry::TurtleOdometry(ros::NodeHandle node_handle, double frequency):
node_handle_{node_handle},
turtle_pose_subscriber_{node_handle_.subscribe("turtle1/pose", 16, &TurtleOdometry::turtlePoseCallback, this)},
turtle_twist_publisher_{node_handle_.advertise<geometry_msgs::TwistWithCovarianceStamped>("turtle1/sensors/twist", 16)},
frequency_{frequency},
{//line 12
;
}
里程计也包括姿势。 我在这里错过了什么?
ros::Message
的官方文档说:
This base-class is deprecated in favor of a template-based serialization and traits system.
在 official source code it looks like it's still defined, but in a contrib version I found, the whole class definition 被删除 #if 0
:
namespace ros {
#if 0
class Message {
//
};
#endif
}
所以,您很可能需要找到一个不同的基地 class。