"双精度"之前的预期非限定 id/

Expected unqualified-id before 'double'/

本文关键字:id 双精度      更新时间:2023-10-16

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

机器人.cpp:43:13:错误:在"double"之前应有非限定 id

机器人.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 ;
 }

我不知道为什么会有错误...我也不知道这个错误意味着什么。我将如何解决它?

我已经设法重新创建了您的错误。

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

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
}

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

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

例:

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