我正在创建自己的链接列表。我试图创建一个链接列表的重载构造函数,它带有两个node_iterator,指向另一个链表的头部和尾部。
重载列表构造函数:
template <typename T>
list<T>::list(node_iterator<T> front, node_iterator<T> back)
{
unsigned temp;
this->head = front.get_current();
while(front != back)
{
++temp;
++front;
}
this->tail = back.get_current();
this->used = temp;
}
以上head
和tail
node<T>*
到我列表中的节点。我创建的front
和back
node_iterators。 get_current()
方法向node<T>*
类指向的当前节点返回node_iterator
。我已在我的++
课程中测试了我重载的!=
和node_iterator
运算符,但它们正常运行。但是当尝试使用上面的构造函数创建我的列表类时,我收到以下错误:
*** glibc detected *** ./a.out: munmap_chunk(): invalid pointer: 0xbf91b1a4 ***
有关如何解决此问题或以更好的方式执行上述操作的任何提示?如果您需要了解更多信息,请与我们联系。
答案 0 :(得分:1)
temp
永远不会被初始化。我想应该是
unsigned temp = 0;
由于缺少= 0
,this->used
最终成为一些随机值。我想一段时间后代码(实际上不在构造函数中),这会导致崩溃。