我的代码如下,当我试图通过程序"加载文件"时,就会出现问题。它会询问我的文件名,当我给它一个它能找到的文件名时,它只会说"Segmentation Fault"并停止运行。我认为问题要么来自loadFile方法本身,要么来自第244行,我在那里编写了向linkedlist添加元素的方法。感谢您的帮助!谢谢
http://pastebin.com/7qZY9Hef
第224行:
void countyElectionList::push_back(countyElectionResults * newCER){
if(head == NULL)
head = newCER;
else
{
countyElectionResults * current = head;
while(current->getNextResult() != NULL){
current = current->getNextResult();
}
current->setNextResult(newCER);
}
}
根据您链接的URL上的源代码(也由于多种原因不会编译,包括缺少括号和函数缺少返回语句等),问题在于:
// A constructor that initializes the private data members
countyElectionList::countyElectionList(){
}
您从未将countyElectionList::head
初始化为NULL,因此当您调用countyElectionList::push_back
时,head
的值很可能不是指向NULL,而是指向谁知道。。。因此发生了碰撞。
供将来参考:当您调试崩溃时,如果发生崩溃的函数看起来不可疑,并且您在源代码中找不到故障,并且在逐步执行逻辑时,您应该继续检查函数的调用方。
更新:因此,在检查了新的pastebin代码(仍然没有编译,因为几个声称返回值的函数缺少返回语句)后,错误仍然存在于同一个函数中:
// A constructor that initializes the private data members
countyElectionList::countyElectionList(){
countyElectionList::head == NULL;
}
请注意,您使用的==
是比较运算符,而不是赋值运算符,即=
。这是要使用的正确代码:
// A constructor that initializes the private data members
countyElectionList::countyElectionList(){
head = NULL;
}
我不得不怀疑你是否真的试图编译这段代码。我照做了,我的编译器立即向我指出了错误。它甚至告诉我该怎么做:
test.cpp(210):警告C4553:'==':运算符无效;你做了吗打算'='?
我还怀疑你有点过头了。我假设这是家庭作业,你没有做实际的选举制度(尽管…),所以我想我的下一个问题是:你有没有考虑过和你的教授谈谈,解释你在语言语法方面有困难?也许你的学校有资源可以帮助你。试图通过在文件中随机插入内容来编程对你的学习没有帮助;这是一种挫败感的锻炼。
首先,在countyElectionList
的构造函数中,似乎从未将head
初始化为NULL
。
当您稍后尝试使用head
时,例如在countyElectionList::push_back
中,这可能会导致问题。