0

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

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

Robot.cpp:43:13:错误:在“双”之前预期“)”

该类在 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 ;

 }

我无法弄清楚为什么会出现错误......而且我也不知道那个错误甚至意味着什么。我将如何解决它?

4

2 回答 2

3

我已经设法重现您的错误。

首先,签名后的分号必须去掉。当您尝试定义一个函数时,它正在声明一个函数。

Robot(double maxSpd) {...} //没有分号

其次首先,由于这是在您的课程之外,您需要对其进行限定:

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
}
于 2012-09-25T01:09:27.653 回答
2

可能的问题是左括号前有一个分号。但是如果没有看到整个班级,就很难这么说。

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

例子:

Robot::Robot(double maxSpd)
{
   MAX_SPEED = maxSpd;
   traveled = 0;
   elapsed = 0;
   x = 0;
   y = 0;
}
于 2012-09-25T01:17:13.537 回答