+ =操作重载,自连接

时间:2012-01-28 23:54:57

标签: c++

首先请原谅我,但是代码太长并且从代码:: 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。 我读了所有信息并将值推入列表,我不知道它为什么会进入无限循环,我不知道。

1 个答案:

答案 0 :(得分:2)

您似乎正在实施List<T>,因此您可以访问其内部:只需在复制列表时实现连接:

  1. 复制作为参数传递的列表
  2. 将副本的开头附加到当前列表的末尾
  3. 从副本中删除列表以避免移动已移动的节点
  4. 从它的外观来看,你没有区分欲望和它的节点:尽管这是可行的,但如果你有一个指向节点序列的列表句柄,它通常会更好。