-2
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <string>
using namespace std;
class car{
private:
string color;
int mileage;
int topSpeed;
int numGears;
public:
};
class carNode{
private:
car Car;
carNode *next;
friend class carLinkedlist;
};
class carLinkedlist{
public:
carLinkedlist();
~carLinkedlist();
bool empty() const;
void addtolist(const car& theCar);
const carNode* getHead();
private:
carNode* head;
};
const carNode* carLinkedlist::getHead(){
return head;
}
void car::setDetails(const string color,const int mileage,const int topSpeed,const int numGears){
this->color = color;
this->mileage = mileage;
this->topSpeed = topSpeed;
this->numGears = numGears;
}
carLinkedlist::carLinkedlist(){
head = NULL;
}
carLinkedlist::~carLinkedlist(){
// what to do here
}
bool carLinkedlist::empty() const{
if (head==NULL)
return true;
return false;
}
void carLinkedlist::addtolist(const car& theCar){
if (empty()){
head = new carNode;
head->Car = theCar;
head->next = NULL;
}
else{
carNode* temp = new carNode;
temp->Car = theCar;
temp->next = NULL;
head->next = temp;
}
}
int main(){
car car1;
car1.setDetails("red",40,140,5);
const car& carr1 = car1;
car car2;
car2.setDetails("black",30,220,5);
const car& carr2 = car2;
carLinkedlist carList;
carList.addtolist(carr1);
carList.addtolist(carr2);
//cout << car1.getColor() << endl;
cout << (carList.getHead())->next->Car.getColor() << endl;
return 0;
}
此代碼在下一行中拋出錯誤,並且下一行和Car都是私有的。我可以使用getCar函數來訪問Car的值,但是對於受保護的下一步該怎麼做,我如何訪問它的值。如何訪問鏈接列表中的下一個C++
P.S.我做了一個類似的理由getHead函數,即訪問頭,但我不能訪問下一個通過功能'因爲那麼會有next-> next保護。 也請驗證我是否應該做一個getCar函數或做別的事情。
爲什麼你不只是如果你想要一個鏈表數據結構使用'的std :: list'? (提示:'std :: vector'通常會勝過它)。 –
@jesper因爲我必須實現我自己的鏈表 –
要使這種類型的代碼可靠地工作,最好先編寫一些單元測試,然後逐步驗證功能,然後才能使用它。 – tadman