2013-02-20 58 views
0

我正在編寫一個程序,並且我試圖將超載到< <運算符。當我調試我的代碼時,我收到一個錯誤消息,說p沒有初始化。我感覺好像我正在初始化p中的陳述,但我想我不是。似乎無法弄清楚我將如何初始化p。這是我收到錯誤消息的代碼。任何建議?接收未初始化的本地變量的警告

ostream &operator <<(ostream &out, const LList & llist) 
{ 

for(LList *p = p; p != 0; p = p -> next) 
    out << p; 

return out; 
} 
+5

'p'正在初始化自己,這是未初始化的。有沒有''''''''''''''''' – hmjd 2013-02-20 22:11:54

回答

6

你正在初始化p本身,它什麼都不做,也許你的意思是指向它傳遞給函數的llist參數?

也許這樣?

for(const LList *p = &llist; p != 0; p = p -> next) 
+0

是的,這就是我想要做的 – beginnerprogrammer 2013-02-20 22:17:08

0
ostream &operator <<(ostream &out, const LList & llist) 
{ 
     for(const LList *p = llist ; p != 0; p = p -> next) 
      out << p; 
     return out; 
} 

首先,你應該使用一個常量,而不是一個非常量的,第二 - 你需要分配p來您發送的變量。

希望這會有所幫助,祝你有美好的一天:)

+0

我認爲你的意思是'&llist'。 – 2013-02-20 22:19:08

+0

我如何在這裏輸入一個新行? ------------------------------------------- no,&llist給我們一個指向llist的指針,即時創建一個指向 LList類型,所以我想p指向llist。 如果我願意做你所說的話我會有一個指向數組的指針。 很像有int **我; int * i2 = i; – Infested 2013-02-20 22:24:29

+0

'llist'是'LList',而不是''LList *'。做'&llist'會給你一個指向''''''''''的'LList'的指針。 – 2013-02-20 22:29:03