【发布时间】:2014-05-25 00:26:48
【问题描述】:
我有双向链表,m_Terminal1 是链表的开头,m_Terminal2 是链表的结尾。这是我的代码
CBusLine(const CBusLine & orig){
m_Terminal1 = new TStop(orig.m_Terminal1 -> m_Name);
m_Terminal2 = new TStop(orig.m_Terminal1 -> m_Name);
TStop * tmpx = m_Terminal2;
TStop * copy = orig.m_Terminal1;
copy = copy ->m_Next;
while(copy != NULL){
TStop * copy_tmp = new TStop(copy->m_Name);
tmpx -> m_Next = copy_tmp;
copy_tmp -> m_Prev = tmpx;
tmpx = copy_tmp;
copy = copy->m_Next;
}
不幸的是,它不起作用,当我想打印出列表时,只有第一项。 这是源文件http://pastebin.com/YCKyZ31K。有人可以帮我吗?提前谢谢你
【问题讨论】:
-
如果你只是重新安排你的
Add()函数实际上只是添加数据(而不是做所有的 I/O),那么复制构造函数就变成了 3 或 4 行代码。您需要做的就是在一个循环中调用 Add(),该循环从传入的列表中的第一项到最后一项。 -
你应该将“CBusLine & orig”设为“const CBusLine & orig”。
标签: c++ deep-copy doubly-linked-list