2013-11-20 62 views
-4

我有下面的結構汽車:C++,結構與指針,創建第一個對象

struct Car { 
public: 
    integer number; 
Car *down, *right; 
    Car(double a, Car b, Car f): number(a), right(&f){} 
}; 

舉例來說,我想有點像汽車的連鎖模式和每節車廂有一個指針指向下一輛車。 我的問題是,第一輛車應該指向無處,爲NULL。 (可變數字與鏈條中汽車的位置無關)。 我想是這樣的:

Car* first = new Car(23421,NULL); 
 
car.cpp:39:35: error: no matching function for call to ‘Car::Car(int, NULL)’ 
car.cpp:39:35: note: candidates are: 
car.cpp:28:3: note: Car::Car(int, Car) 
car.cpp:28:3: note: no known conversion for argument 2 from ‘int’ to ‘Car’ 
car.cpp:24:8: note: Car::Car(const Car&) 
car.cpp:24:8: note: candidate expects 1 argument, 2 provided 

我怎麼可以指向無處?

+0

一段代碼中的錯誤太多。首先將'Car(double a,Car b,Car f)'改成'Car(double a,Car * b,Car * f)',但它也不好;你可能會完全重寫這段代碼。 – anatolyg

+0

您可能想要查看構造函數,指針,引用和方法重載 –

+0

好像您是C++的新手,犯了大量錯誤,使Car存儲組成Car的屬性,然後將它們存儲在std中: :列表而不是發明自己的 – paulm

回答

0

您應該聲明一個Car變量並將指針成員賦值爲NULL。這應該在默認構造函數中完成,因此您不必每次都手動執行它。

Car mycar; 
    mycar.down =NULL; 
    mycar.right =NULL; 

比,後來由於你願意,你可以鏈接你的車:

mycar.down = mySecondCar; 
mycar.right = myThirdCar; 
+0

這可能是一個評論的複製 –

0

此構造

Car(double a, Car b, Car f): number(a), right(&f){} 

是無效的。你使用指向局部變量的指針。按照以下方式更改構造函數

Car(double a, Car *b, Car *f): number(a), right(f){} 
+0

這可能是一個評論的重複 –