在“双倍”之前预期的不合格身份/

时间:2012-09-25 01:00:25

标签: c++ g++

我正在为一个名为Robot的实验室编写一个程序。当我编译它时,我得到了这组错误:

  

Robot.cpp:43:13:错误:在'double'之前预期的unqualified-id

     

Robot.cpp:43:13:错误:预期')'在'double'之前

该类在Robot.h头文件中定义,导致问题的.cpp中的代码如下所示:

/*
 * Name: Robot (constructor)
 *
 * Creates the robot with the given maximum speed.
 */

 Robot( double maxSpd ) 

 {

      MAX_SPEED = maxSpd;
      traveled = 0 ;
      elapsed = 0 ;
      x = 0 ;
      y = 0 ;

 }

我无法弄清楚为什么错误存在......而且我也不知道错误甚至意味着什么。我该如何解决?

2 个答案:

答案 0 :(得分:3)

我设法重新创建了你的错误。

首先,签名后必须使用分号。当你试图定义一个函数时,它会声明一个函数。

Robot(double maxSpd) {...} //no semicolon

其次首先,由于这不属于你的班级,你需要对其进行限定:

Robot::Robot(double maxSpd) {...}

接下来,由于MAX_SPEED是常量,因此需要将其放在成员初始值设定项中:

Robot::Robot(double maxSpd)
    : MAX_SPEED(maxSpd) {...}

最后,您应该将其余的作业移到初始化列表中(不是必需的,但很好),请记住它们应该按顺序列出 在类定义中:

Robot::Robot(double maxSpd)
    : MAX_SPEED(maxSpd), traveled(0), elapsed(0), x(0), y(0) {
//body, which, from your example, would now be empty
}

答案 1 :(得分:2)

可能的问题可能是在开括号之前有分号。但是没有看到整个班级,就很难这么说。

如果此代码不在类声明中,则可能在“Robot()”构造函数名称之前缺少“Robot ::”命名空间规范。

示例:

Robot::Robot(double maxSpd)
{
   MAX_SPEED = maxSpd;
   traveled = 0;
   elapsed = 0;
   x = 0;
   y = 0;
}