2012-09-25 43 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; 
} 
相關問題