我的大腦從來沒有真正理解鏈表和指針的更精細的點,但我試圖用一些C++任務來幫助朋友。 (在我進一步討論之前,是的,有std :: list,但我正在尋找學術答案,也許會讓鏈接列表對他和我自己更容易理解)。將指針分配給另一個指針時發生Segfault
我們需要做的是根據用戶輸入生成一個對象的鏈表(Employee
對象),然後將該信息顯示給用戶。每當我嘗試將對象分配到鏈接列表容器時,它都會發生段錯誤。
我有以下鏈接列表對象:
class LinkedListContainer {
private:
Employee *emp;
LinkedListContainer *next;
public:
Employee getEmployee() { return *emp; }
void setEmployee(Employee *newEmp) {
*emp = *newEmp // This is what is causing the segfault
}
LinkedListContainer getNext() { return *next; }
void setNext(LinkedListContainer *newContainer) {
*next = *newContainer;
}
}
我敢肯定,我在做什麼可怕的錯誤。
Minor nitpick,不是答案:'getEmployee()'應該返回一個'Employee'而不是'Employee'。前者是一個參考,後者將'Employee'複製到堆棧中。 'getNext()'有同樣的問題;它會創建下一個LinkedListContainer對象的副本,如果必須處理複製構造函數,可能會造成混亂。 – 2009-12-09 21:30:09