私はVisual Studio 2013を使用しています。私のプロジェクトはライブラリ管理システムです。 3セム最終PROJECT.exeで0x6534DF58(msvcp120d.dll)でアクセス違反の読み取り場所0x012D363C
class Book {
string edition;
string serialno;
string shelfno;
int date, month, year;
public:
Book();
Book(char name, char aname, string edit, int srno, int shfno);
void getbook();
void showbook();
void getdate();
string bookname;
string authorname;
};
Book::Book()
{
bookname = "BOOKNAME";
authorname = "AUTHORNAME";
edition = "EDITION";
serialno = "SERIALNO.";
shelfno = "SHELFNO.";
}
void Book::showbook()
{
cout << bookname << " ---- " << authorname << " ---- " << edition << "---- " << serialno << "----" << shelfno << endl;
}
void Librarysystem::showrecord()
{
ifstream file;
Book b;
file.open("bookrecord.txt", ios::in);
if (!file)
cerr << "\n could not open file:";
cout << "\t\t BOOK RECORD\n\n" << endl;
while (!file.eof()) {
b.showbook();
file.read(reinterpret_cast<char*>(&b), sizeof(b));
if (file.eof())
file.close();
//cerr << "\n could not read from file:";
}
}
未処理の例外:0xc0000005で:アクセス違反読取位置0x012D363C。 これは例外です
(例えば
operator<<
とoperator>>
を再定義することによって)Book
に適切&特定のシリアライズ/デシリアライズする方法を記述することです。 'Book'の定義を教えてください。 –本は確かにPOD型ではありません。objecの状態を決して保存せず、フィールド値を保存します。あなたはクラス内の直列化メソッドが必要です – Swift
あなたのコードをインデントする方法を学んでください。それはデバッグに役立ち、*あなたも*役立ちます。 – cybermonkey