谁能解释下这个问题?
建立一个Goods类的数组,在数组中输入成员变量,然后输出到文件中。在从文件中读入,然后现实。为什么会出现异常
Unhandled exception at 0x5a9bad54 (msvcp100d.dll) in IO.exe: 0xC0000005: Access violation writing location 0xfeeefeee.
另外问一下,像这样的错误如何调试。我现在碰到这样的问题就是一头雾水,不知道如何下手。
#include <iostream>
#include <fstream>
#include <string>
#define MAX 3
using namespace std;
class Goods
{
int Num;
string Name;
string Infor;
public:
void Init(string name, string infor,int num=0) //默认形参的构造函数
{
Num=num;
Name=name;
Infor=infor;
}
void print()
{
cout<<Num<<'\t'<<Name<<'\t'<<Infor<<endl;
}
};
void main()
{
Goods goods[MAX];
int num;
string name,infor,filename;
cout<<"请输入货物相关信息(编号、货物名、货物介绍):"<<endl;
for(int i=0;i<MAX;i++)
{
cin>>num>>name>>infor;
goods[i].Init(name,infor,num);
}
cout<<"建立文件的文件名:"<<endl;
cin>>filename;
ofstream file(filename,ios::out);
if(!file)
{
cerr<<"文件打开失败"<<endl;
return;
}
for(int i=0;i<MAX;i++)
file.write((char*)(goods+i),sizeof(Goods));
file.close();
ifstream file1(filename,ios::in);
if(!file1)
{
cerr<<"文件打开失败"<<endl;
return;
}
Goods temp[MAX];
file1.read((char*)temp,sizeof(temp));
for(int i=0;i<MAX;i++)
temp[i].print();
file1.close();
}