2012-09-25 44 views
0

我正在为一个叫做Robot的实验室编写一个程序。当我编译它,我得到这个错误集:'double'之前预期的不合格id/

Robot.cpp:43:13: error: expected unqualified-id before 'double'

Robot.cpp:43:13: error: expected ')' before '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 ; 

} 

我不明白为什么这些错误在那里......而且我也不知道那个错误甚至意味着什么。我将如何解决它?

+0

这似乎并非为有效的C++。为什么'maxSpd'后面有分号?]? –

+1

这是在你的类定义中,还是在它之外? – chris

+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 
} 
+0

在您发布答案后,OP在签名(和相应的错误消息)后删除了分号。 –

+0

@KeithThompson,忘了改变这一点,谢谢。 – chris

+0

@chris嘿,我在这里学习C++,我有一个问题。如果我在类声明中定义构造函数,我不需要添加Robot :: Robot,是否正确? – 2012-09-25 01:14:57

2

可能的问题可能是在开括号前有一个分号。但是,如果没有看全班的话,就很难这么说。

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

实施例:

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