我有一个帐户类,其中包含数据成员accountNumber,accountBalance和指向Person对象accountPerson的指针。所有这些都是受保护的,因为Account是一个抽象基类。我的程序从文件中读取信息,我试图调用每个对象自己的readData()方法。出于某种原因,当我调用accountPerson-> readData(file);时会抛出异常。
我只包含类.cpp文件中的readData函数。如果我需要包含其他任何内容,请告诉我。
请查看我的代码,如果我遗漏了某些内容,请告诉我。
Account.cpp
void Account::readData(ifstream &ifile)
{
string a;
string b;
if (ifile.fail() || ifile.bad())
{
throw readFileException("Could not read file");
}
else
{
getline(ifile, a);
accountNumber = stoi(a);
getline(ifile, b);
accountBalance = stod(b);
accountPerson->readData(ifile);
}
}
Person.cpp
void Person::readData(ifstream &ifile)
{
if (ifile.fail() || ifile.bad())
{
throw readFileException("Could not read file");
}
else
{
getline(ifile, name);
getline(ifile, address);
}
}
储蓄帐户.cpp
void Savings::readData(ifstream &ifile)
{
string _a;
if (ifile.fail() || ifile.bad())
{
throw readFileException("Could not read file");
}
else
{
ifile >> interest;
ifile.ignore();
Account::readData(ifile);
}
}
driver.cpp
while (inFile.good())
{
if (!inFile.eof()) //Loop to read in accounts and push them to vector
{
while (inFile >> type)
{
if (type == "Checking")
{
cout << type << endl;
a[index] = new Checking();
}
else
{
cout << type << endl;
a[index] = new Savings();
}
cout << index << endl;
try
{
a[index]->readData(inFile);
}
catch (readFileException &e)
{
cout << "Error: " << e.getMessage() << endl;
system("pause");
exit(1);
}
index++;
}
}
} // end of while loop
例外说:
Project3.exe中0x0016733B处抛出异常:0xC0000005:Access 违规读取位置0x00000014。
非常感谢初学者的任何提示。谢谢。