2011-05-12 46 views
1

我是比較新的這個級別的編碼和我真的打我的這個錯誤牆:假設我的代碼中有「語法錯誤」,「missing」;' 「。「之前」

[Line 65] error C2143: syntax error : missing ';' before '.' 

顯然,這通常會在我的代碼意味着一個語法錯誤,但我可以」在任何地方找到它。任何幫助(或第二組眼睛看到我的錯誤,將不勝感激)。

這裏是有問題的代碼片段:

class RacingCar { 

public: 
      Wheel* wheels[4]; 

      RacingCar() 
      { 
       wheels[0] = new Wheel; 
       wheels[1] = new Wheel; 
       wheels[2] = new Wheel; 
       wheels[3] = new Wheel; 
      } 

      RacingCar(RacingCar& refOldCar) 
      { 
//    new Wheel(refOldCar.wheels[0]->pressure); 
       wheels[0] = new Wheel; 
       wheels[1] = new Wheel; 
       wheels[2] = new Wheel; 
       wheels[3] = new Wheel; 

       int a = refOldCar.speedCopy(); 
       **RacingCar.setSpeed(10);** 
       RacingCar.Brake(50); 
       RacingCar.Print(); 
       RacingCar.speed = refOldCar.speed; 
      } 

由於一噸的幫助

+0

僅供參考,有問題的線路由**突出顯示......這些實際上不在我的代碼中;) – Herp 2011-05-12 07:40:11

+0

是您的代碼缺少「}」? – lamwaiman1988 2011-05-12 07:50:44

+0

'車輪*車輪[4];'似乎相當不必要。爲什麼不使用'輪子[4];''或'輪子*輪子'?對於後者,您可以像這樣初始化它'wheels = new Wheel [4]'; – greatwolf 2011-05-12 07:52:42

回答

5

此:

RacingCar.setSpeed(10); 

應該是:

setSpeed(10); 

這是速記:

this->setSpeed(10); 
+0

哦,快點。我不能相信我錯過了這一點。我想這不是我習慣的語法錯誤。真的,真的很感謝迅速回答。 – Herp 2011-05-12 07:43:18

1
RacingCar.setSpeed(10); 

沒有這樣的語法。寫:

RacingCar::setSpeed(10); 

setSpeed(10); 

this->setSpeed(10); 

注意,他們都可能有不同的含義,雖然可能會工作一樣在你的環境。

+0

謝謝,我現在看到我正在嘗試引用其中的某些內容。這說得通。欣賞快速回答 – Herp 2011-05-12 07:44:06

0

由於速度不太可能是一類級屬性(影響所有汽車),你大概意思寫:

this->setSpeed (10); // or, for the less anal, just "setSpeed(10);" :-) 

這更正確地使得試圖設置對象級屬性。類級別的屬性將引用RacingCar::SomethingOrOther(雙冒號而不是點),這就是爲什麼它認爲您需要關閉當前語句之前.字符。

+0

感謝您解釋,這真的有助於它的意義 – Herp 2011-05-12 07:52:49

1

您正在使用Class和Constructor(與Class相同)名稱 - 例如RacingCar而不是refOldCar,這個或者直接訪問成員。