我已确定当我为toString()
调用LinkedList class
方法时会发生错误,更具体地说,当执行第8行或第9行时
string LinkedList::toString() const
{
int traverse=1;
Node * that = head;
string sout;
while(size>=traverse)
{
sout += "value = "+that->s +" ";
that = that->next;
traverse++;
}
return sout;
}
这个LinkedList使用Node类来存储看起来像这样的数据,而LinkedList类本身有一个int size变量和一个指向第一个Node的指针
class Node
{
friend class LinkedList;
private:
std::string s;
Node * next;
Node(std::string st, Node *nextn);
};
我猜这是我的一些愚蠢的noob错误,但我无法通过盯着它或重新阅读指针教程来解决它
答案 0 :(得分:0)
如果没有查看完整的代码,我们无法猜测哪里可能出错。 对于当前代码,似乎下面的代码是错误的。请添加一个空检查日志
that = that->next
if(that ==null)
{
// std::cout<<"A null node found\n";
break;
}
答案 1 :(得分:0)
是基本问题是node *在某些时候是NULL。 1)Seg Fault第一次在循环中访问时出现.Cause:从它复制的那个头是空的。传递给这个方法的列表指针的chcek是正确的。 2)循环中几次迭代后的Segafult。原因:遍历条件不正确并超出列表最后一个节点,从而尝试访问NULL。
在任何一种情况下,您都可以尝试在循环中添加一些cout语句,并添加检查&#34;&#34;指针。