我正在尝试为双向链表中的节点编写复制赋值运算符。但是,以下代码给了我一个堆栈溢出:
template <class DataType>
ListNode<DataType>& ListNode<DataType>::operator=(const ListNode<DataType>& Node)
{
if(this == &Node)
return *this;
else
{
if(Child != NULL)
delete Child;
if(Parent != NULL)
delete Parent;
if(Node.Child != NULL)
{
Child = new ListNode<DataType>();
*Child = *Node.Child;
}
else
Child = NULL;
if(Node.Parent != NULL)
{
Parent = new ListNode<DataType>();
*Parent = *Node.Parent;
}
else
Parent = NULL;
_data = Node._data;
}
return *this;
}
像这样复制节点的标准方法是什么,我是否需要使用其他方式(即不是复制赋值运算符)来实现这一点?我想尽可能避免这样做,因为它会涉及重写我现有的大量程序。这个函数似乎对单链表工作得很好,但是通过添加父指针的复制,它似乎遇到了问题。我似乎无法确定原因,或者想出另一种方法来编写这个函数。