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->數據 - >輸出();這條線,它工作正常。有什麼問題?請幫助
您有在打印'Car'行的問題。可是你還沒有張貼'Car'的代碼。沒有看到「Car」的代碼,任何人都很難幫助你。 –
''#include \ ntypedef std :: deque StringOfCar;''爲什麼每個人都在重新發明輪子? –
BitTickler
另外,發佈你在哪裏以及如何實現這些功能,可能會有用 – Ediac