首先请原谅我,但是代码太长并且从代码:: blocks中复制了,所以没有缩进,我使用了pastebin,这是类: http://pastebin.com/auY5PnFw 在这个类中我有一个列表,+ =运算符重载在这里:
List<T>& operator+= (List<T>& l)
{
List<T>* ptr;
ptr=l.next;
while(ptr!=&l)
{
this->push(*ptr->info);
ptr=ptr->next;
}
return (*this);
}
问题在于自连接,假设我有一个List l1,这个列表里面有一些值。如果我说:l1 + = l1,尝试编译程序我看到程序进入无限环。 我试图对此进行推理,因为参数是l1,通过引用调用,这对于==&amp; l是有效的。 所以ptr指向l.next,但也指向this-&gt; next。 我读了所有信息并将值推入列表,我不知道它为什么会进入无限循环,我不知道。
答案 0 :(得分:2)
您似乎正在实施List<T>
,因此您可以访问其内部:只需在复制列表时实现连接:
从它的外观来看,你没有区分欲望和它的节点:尽管这是可行的,但如果你有一个指向节点序列的列表句柄,它通常会更好。