怎么会出这样的错误?
近日,编写一个链表的程序,源代码如下:
//item.h
#include <iostream>
using namespace std;
class listitem
{
public:
listitem(int val=0,listitem* ne=0);
int value(){ return _value;}
listitem *next(){return _next;}
private:
int _value;
listitem *_next;
};
listitem::listitem(int val,listitem *ne):_value(val)
{
cout<<_value;
if (!ne)
_next=0;
else {
_next=ne->_next;
ne->_next=this;
}
}
//list.h
#include <iostream>
#include "item.h"
class list
{
public:
list():_front(0),_end(0),_size(0){}
void insert_front(listitem *item);
void display();
private:
listitem *_front;
listitem *_end;
int _size;
};
void list::insert_front(listitem *item)
{
if (!_front){
_front=_end=item;
_size++;
}
else{
item=(*_front).next();
_front=item;
_size++;
}
}
void list::display()
{
listitem *item;
item=_front;
while( item!=_end)
{
cout<<(*item).value()<<endl;
item++;
}
}
//test.cpp
#include <iostream>
#include "list.h"
int main()
{
list mainlist;
int i;
for (i=0;i<20;i++)
mainlist.insert_front(new listitem(i));
mainlist.display();
return 0;
}
在.net环境下编译没有问题,但运行出现:“list.exe 中的 0x004325c6 处最可能的异常:0xC0000005: 读取位置 0x00000000 时发生访问冲突”的提示,不知道为什么?