2015-06-21 33 views
0

我有班車,現在我想做個車對象的鏈接列表。所以爲此,我有一個Node類來保存每個節點的數據。製作帶功能重載的班級對象清單

class StringOfCar; 
class Node 
{ 
    private: 
    Node* next; 
    Car* data; 
    Node() 
    { 
     next = 0; 
     data = 0; 
    } 
    public: 
     friend class StringOfCar; 
}; 

而且StringOfCar

class StringOfCar 
{ 
private: 
    Node* head; 
    Node* tail; 
public: 
StringOfCar(){ 
    head=0; 
    tail=0; 
} 
void output(); 
void push (Car &); 

}; 

現在我推的元素沒有任何問題與此功能:

void StringOfCar::push(Car & new_car) 
{ 
    Car *currentCarPtr; 
    Node *currentNodePtr; 
    currentNodePtr = new Node; 
    currentCarPtr = new Car(new_car); 
    currentNodePtr->next = 0; 
    currentNodePtr->data = &new_car; 

    if (head == 0) 
    { 
     head = currentNodePtr; 
     tail = currentNodePtr; 
    } 
    else 
    { 
     tail->next = currentNodePtr; 
     tail  = currentNodePtr; 
    } 
} 

但是當我嘗試輸出,程序停止abruptly.I有輸出( )的車類也。兩個類輸出函數爲:

void StringOfCar::output(){ 
    Node * currentNodePtr = head; 
    if (head == 0) 
     cout << "NO cars \n"; 
    else 
    { 
     while (currentNodePtr != 0) 
     { 
      currentNodePtr->data->output(); 
      currentNodePtr = (currentNodePtr->next); 
     } 
    } 
} 

而對於汽車類:

void Car::output() 
{ 
    cout<<"\nreportingMark "<<setw(3)<<reportingMark; 
    cout<<"\ncarNumber "<< setw(8)<< carNumber; 
    cout<<"\nkind " << setw(13)<<KIND_ARRAY[kind]; 
    if (loaded==true) 
    { 
     cout<<" \nloaded  true"; 
    } 
    else if (loaded == false) 
    { 
     cout<< "\nloaded  false"; 
    } 
    cout<< "\ndestination "<<setw(7)<<destination<<endl; 
} 

當我評論currentNodePtr->數據 - >輸出();這條線,它工作正常。有什麼問題?請幫助

+1

您有在打印'Car'行的問題。可是你還沒有張貼'Car'的代碼。沒有看到「Car」的代碼,任何人都很難幫助你。 –

+0

''#include \ ntypedef std :: deque StringOfCar;''爲什麼每個人都在重新發明輪子? – BitTickler

+0

另外,發佈你在哪裏以及如何實現這些功能,可能會有用 – Ediac

回答

0

我認爲這個問題是在這一行:

currentNodePtr->data = &new_car; 
功能 void StringOfCar::push(Car & new_car)

這應該是

currentNodePtr->data = currentCarPtr; 
+0

Thanx很多.. :) – ms8