我試圖在C++中實現通用鏈接的對象列表。但是,當我兩次獲取同一個對象時,它給了我不同的結果。我覺得這是由於濫用指針。請幫我調試。c中的通用鏈接列表C++實現
這是Node的實現。我已經使用了模板指針,因爲鏈接列表應包含用戶定義的對象。
template <class T> class Node{
private:
T* value;
Node<T>* next;
public:
Node(T* v){value = v; next = NULL;}
Node(T* v, Node<T>* n){value = v; next = n;}
T* getElement(){return value;}
Node<T>* getNext(){return next;}
};
這是通用鏈接列表的實現。
template <class T> class LinkedList{
public:
Node<T>* head = NULL;
LinkedList(){}
LinkedList(T* value){
Node<T> node(value);
head = &node;
}
Node<T>* getHead(){
return head;
}
void add(T* value){
Node<T> node(value,head);
head = &node;
}
};
主要功能: 當我打電話鏈表的頭,它給了我2個不同的答案。在這段代碼中,Complex是一個容納複雜對象的簡單類。
int main(){
Complex c1(1,2); Complex c2(3,4); Complex c3(5,6);
LinkedList<Complex> list(&c1);
list.add(&c2);
cout<<list.head->getElement()->i<<" "<<list.getHead()->getElement()->j<<endl;
cout<<list.head->getElement()->i<<" "<<list.getHead()->getElement()->j<<endl;
return 0;
}
在此先感謝!
'C'沒有類,所以你不能用'classes'在'C'中實現一個類。嘗試使用結構。 –
使用您的調試器。 SO不是調試服務。在追蹤問題後,您可以問一個問題,如果您不明白爲什麼代碼正在執行的方式,但在此時您將掌握所發生的問題的所有細節。 –
爲什麼不使用'std :: list'並完成它呢? –