编译器错误消息错误:令牌之前的预期')' '*'。我的构造函数出错



我一直得到以下编译错误

包含在文件中/home/armon/Development/groovy_workspace/沙盒/smart_wheelchair/箱子/smart_wheelchair/state_machine_planner/src/BasicControllerState.cpp: 1:0:/home/armon/Development/groovy_workspace/沙盒/smart_wheelchair/箱子/smart_wheelchair/state_machine_planner/include/state_machine_planner/BasicControllerState.h: 38:49:错误:期望' * '之前的')'标记
/home/armon/Development/groovy_workspace/沙盒/smart_wheelchair/箱子/smart_wheelchair/state_machine_planner/src/BasicControllerState.cpp: 44:错误:在'('之前预期的构造函数、析构函数或类型转换token包含在文件中/home/armon/Development/groovy_workspace/沙盒/smart_wheelchair/箱子/smart_wheelchair/state_machine_planner/include/state_machine_planner/StateMachinePlanner.h: 16:0,从/home/armon/Development/groovy_workspace/沙盒/smart_wheelchair/箱子/smart_wheelchair/state_machine_planner/src/ControllerNode.cpp: 4:/home/armon/Development/groovy_workspace/沙盒/smart_wheelchair/箱子/smart_wheelchair/state_machine_planner/include/state_machine_planner/BasicControllerState.h: 38:49:error: expected ') ' before ' ' token make[3]: [CMakeFiles/state_machine_planner.dir/src/BasicControllerState.cpp.o]错误1 make[3]: * Waiting for unfinished jobs....在文件包括从/home/armon/Development/groovy_workspace/沙盒/smart_wheelchair/箱子/smart_wheelchair/state_machine_planner/include/state_machine_planner/StateMachinePlanner.h: 16:0,从/home/armon/Development/groovy_workspace/沙盒/smart_wheelchair/箱子/smart_wheelchair/state_machine_planner/src/StateMachinePlanner.cpp: 1:/home/armon/Development/groovy_workspace/沙盒/smart_wheelchair/箱子/smart_wheelchair/state_machine_planner/include/state_machine_planner/BasicControllerState.h: 38:49:错误:期望' * '之前的')'标记
/home/armon/Development/groovy_workspace/沙盒/smart_wheelchair/箱子/smart_wheelchair/state_machine_planner/src/StateMachinePlanner.cpp:在构造函数"state_machine_planner:: StateMachinePlanner:: StateMachinePlanner ():
/home/armon/Development/groovy_workspace/沙盒/smart_wheelchair/箱子/smart_wheelchair/state_machine_planner/src/StateMachinePlanner.cpp:上午9:错误:没有匹配"(state_machine_planner:: BasicControllerState)(costmap_2d:: Costmap2DROS *,)的

BasicControllerState是StateMachinePlanner的成员

这里是代码,

BasicControllerState.h (relevant piece):

class BasicControllerState {
                public:
                        BasicControllerState(){}
                        BasicControllerState(costmap_2d::costmap2DROS* costmap_ros);

BasicControllerState.cpp:

#include <state_machine_planner/BasicControllerState.h>
namespace state_machine_planner {
        BasicControllerState::BasicControllerState(costmap_2d::costmap2DROS* costmap_ros) {
                //init trajectory parameters specific to what state the child class     represents  
                //init sim_time_ and sim_granularity_
                //init sample space limits
                //init best_score_thresh_
                obstacle_dist_cost_gain_ = 0.1;
                heading_diff_cost_gain_ = 0.0;
                linear_vel_cost_gain_ = 0.0;
                omega_cost_gain_ = 0.0;
                num_of_linvel_samples_ = 20;
                num_of_angvel_smaples_ = 40;
                costmap_ros_ = costmap_ros;
                costmap_ros_->getCostmapCopy(costmap_);
                robot_footprint_ = costmap_ros_->getRobotFootprint();
                world_model_ = new base_local_planner::CostmapModel(costmap_);
        }

StateMachinePlanner.h:

class StateMachinePlanner
        {
                public:
                        StateMachinePlanner();
                        void init(int latency_command_queue_size, vel_params_struct vps, time_params_struct tps);
                        void setKey(key_command_t key);
                        geometry_msgs::Twist computeVelocityCommands();
                private:
                        std::deque<Eigen::Vector2f> latency_command_queue_;
                        int latency_command_queue_size_;
                        vel_params_struct velocity_parameters_;
                        time_params_struct time_parameters_;
                        navigation_state_t current_state_;
                        key_command_t key_command_;
                        tf::TransformListener* tf_;
                        costmap_2d::Costmap2DROS* costmap_ros_;
                        costmap_2d::Costmap2D costmap_;
                        BasicControllerState forward_state_;

StateMachinePlanner.cpp(我实例化它的地方):

namespace state_machine_planner {
        StateMachinePlanner::StateMachinePlanner() : tf_(NULL), costmap_ros_(NULL) {
                tf_ = new tf::TransformListener(ros::Duration(10));
                costmap_ros_ = new costmap_2d::Costmap2DROS("costmap",*tf_);
                costmap_ros_->getCostmapCopy(costmap_);
                forward_state_(costmap_ros_);
        }

原谅我,我知道这可能看起来微不足道,但我希望找到一些c++向导来帮我摆脱困境。我们在这个问题上花了太多时间了

costmap_2d::costmap2DROS*需要一个前向声明,或者您需要包含定义它的头文件。因为它是一个指针,所以前向声明更好。所以在类定义之前这样做:

namespace costmap_2d{
  class costmap2DROS;
}

相关内容

最新更新