2013-11-21 19 views
0

結構對象的變化值I具有以下結構汽車:C++,屬於一類

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

和道路類,在.H定義:

class Road 
{ 
public: 
    int road_num; 
    Car* police; 

}; 


例如,我想模仿一些汽車鏈,並且每輛汽車都有一輛指向下一輛汽車的指針。 (我知道我可以使用列表,但我不被允許,所以我想到了這樣的事情)。
我希望能夠在這條特定道路上定義警車(包括其他車輛)。我想給這輛已經在主車上的警車提供一個號碼,並且能夠在道路級別的成員職能中改變它。我有一個問題,如何多餘的一道道級的汽車可變

在主:在道路類像這樣的成員函數

Road road88; 

(*(road88.police)).number=33; 

然後某處:

(*police).number=11; 

我可以complite的PROGRAMM但是當我運行它,我得到以下錯誤:

Segmentation fault (core dumped) 

如何超過88號公路警車?
非常感謝。

+0

向我們展示如何分配和初始化Car對象。 –

+0

很可能您需要正確實例化警車'Car'(例如,使用'new Car()')。 –

回答

2

您從不初始化指向汽車的指針,因此它指向垃圾內存。嘗試:

road88.police = new Car; 
road88.police->number = 33; // same as (*(road88.police)).number = 33;; 

不過,在一個構造函數中初始化它會更好。

使用指針作爲字段可能非常棘手。我建議研究三條規則,並熟悉動態分配的複雜性。

+0

然後,一旦你熟悉那些錯綜複雜的東西,看看RAII和零規則,再也不用擔心它們。 –