【发布时间】:2017-07-20 05:09:56
【问题描述】:
我不断收到读取访问冲突。这是我的代码。
class List
{
public:
List();
List(const List ©);
~List();
/*List & operator=(const List &rhs);
Record * headPtr() const;
void setheadptr(Record * const newhead);
bool insertatfront(Record newdata);*/
void importcourselist();
void Loadmasterlist();
void storemasterlist();
Record *makenode(fstream &file);
Record *makenode(ifstream &file);
private:
Record *mHead;
Record *mEnd;
};
List::List()
{
mHead = nullptr;
mEnd = nullptr;
}
void List::storemasterlist()
{
ofstream outfile;
outfile.open("masterlist.txt");
mEnd = mHead;
while (mEnd->getnext()!= nullptr)
{
outfile << mEnd << endl;
mEnd = mEnd->getnext();
}
outfile << mEnd;
}
我不确定发生了什么,但是每次我尝试调试它时,它都会将我发送到 getter 函数以获取我的指针,如下所示:
Record *Record::getnext()
{
return mnext;
}
我相信我的错误存在于我的导入功能中。这是我创建额外空节点的地方。
void List::importcourselist()
{
ifstream infile;
string ptoken;
infile.open("studentlist.csv");
getline(infile, ptoken);
mHead = makenode(infile);
mEnd = mHead;
while (!infile.eof())
{
mEnd->setnext(makenode(infile));
mEnd = mEnd->getnext();
}
infile.close();
}
【问题讨论】:
-
请添加语言标签
-
你写
mEnd->getnext(),但mEnd可能为空 -
更改您的代码,以免在空指针上执行
-> -
while (mEnd->getnext()!= nullptr)->while (mEnd) -
如果每个链表实现问题我都有一分钱!!!