[英]Segmentation Fault
我在 IntList.h 文件中有一个名为 IntList 的基类。 以及在 SortedSet.h 文件中称为 SortedSet 的继承类。 IntList 具有以下结构:-
struct IntNode
{
int data;
IntNode *next;
IntNode( int data ) : data(data), next(0) {}
};
以下代码是 SortedSet 类中的友元函数。 此函数返回一个 SortedSet 对象,该对象是 2 个 SortedSet 对象的并集,即此二元运算符的左操作数和右操作数。
SortedSet operator|(const SortedSet &lho, const SortedSet &rho)
{
SortedSet temp;
IntNode* set1 = lho.head;
IntNode* set2 = rho.head;
while(set1->next != 0)
{
temp.push_back(set1->data);
set1 = set1->next;
}
delete set1;
while(set2->next != 0)
{
if (temp.in(set2->data) == false)
{
temp.push_back(set2->data);
//cout<<"It isn't in there"<<endl;
}
set2 = set2->next;
}
delete set2;
return temp;
}
我遇到了分段错误,而且我似乎无法修复它。 任何帮助,将不胜感激。 谢谢!
代码中的一个明显错误是,当您应该测试set1
不为空时,您测试了set1->next
不为空。 从您发布的有限信息来看,很难确定这是唯一的问题,但这几乎肯定会导致分段错误,因此我相对相信这是问题所在。
将您的 while 循环更改为如下所示:
while(set1 != 0)
{
temp.push_back(set1->data);
set1 = set1->next;
}
然后拍自己的额头,因为如果快速应用调试器,这很容易上手。
编辑:您还应该删除delete
操作,因为它们将始终作用于空指针。 目前尚不清楚为什么您只想删除列表中的一个元素,所以也许您认为自己正在做的事情不需要做,尽管没有关于SortedSet
工作的信息很难知道。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.