2013-02-20 55 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