-1
私はOOPプロジェクトに取り組んでおり、ファイルに書き込む必要があり、ファイルを書き込むたびに1つのオブジェクトだけが書き込まれるという問題に直面しました。どのようにしてすべてのオブジェクトのデータを書き込むことができますか?私はこれを試みたが、didntの仕事。ファイルから読み書きする
virtual void save(ofstream outfile) = 0;`// the base class
void AND2::save(ofstream outf) //derived
{
outf.open("test.txt");
outf << Component::getype() << " ";
outf<< Component::getid() << " ";
outf << Component:: graphicsinfomration().x1 << " ";
outf<< Component::graphicsinfomration().x2 << " ";
outf << graphicsinfomration().y1 << " ";
outf << graphicsinfomration().y2 << " ";
outf << endl;
outf.close();
}
else
{
ofstream outf;
for (int i = 0; i < (pApp->getcompcount()); i++)
{
//ask user to enter text name
c[i]->save(outf);
}
pOut->ClearStatusBar();
}
*ループ*で繰り返し実行しているとしますか?そして、私はあなたがその出力ファイルストリーム*をあなたの関数に渡すことができたのは不思議です。それにもかかわらず、*呼び出し元が既にオープンしているファイルストリームを参照で*送ることができます。 – WhozCraig
ストリームは参照渡しにする必要があります。通常、コピーを渡すとエラーメッセージが生成されます。 –
保存機能は毎回同じファイルを上書きします。それを開いて、最後にデータを追加する必要があります(例: 'outf.open(" test.txt "、std :: ofstream :: out | std :: ofstream :: app);'。 –