CArchive::WriteObject
更新 : 2007 年 11 月
指定した CObject をアーカイブに格納します。
void WriteObject(
const CObject* pOb
);
パラメータ
- pOb
格納されるオブジェクトへの定数ポインタ。
解説
この関数は、通常 CObject に対してオーバーロードされている CArchive 出力ストリーム演算子 (<<) で呼び出します。同様に、WriteObject はアーカイブされたクラスの Serialize 関数を呼び出します。
アーカイブを有効にする場合は、IMPLEMENT_SERIAL マクロを使用する必要があります。WriteObject は、ASCII 形式のクラス名をアーカイブに書き込みます。このクラス名については、読み込みプロセス中に妥当性がチェックされます。特殊なエンコーディング方法により、クラスに複数のオブジェクトがあっても、不要なクラス名の重複を避けることができます。この方法により、複数のポインタのターゲットとなるオブジェクトが冗長な形で記憶されないようにすることもできます。
実際のオブジェクトのエンコーディング方法 (ASCII 形式のクラス名が存在する場合を含む) は、実装の詳細であり、ライブラリの将来のバージョンで変更できるようになっています。
メモ : |
---|
アーカイブするオブジェクトは、アーカイブを開始する前に、作成、削除、更新を完了してください。オブジェクトの変更中にアーカイブを実行すると、そのアーカイブは破損します。 |
使用例
CAge クラスの定義については、「CObList::CObList」の例を参照してください。
CFile myFile(_T("My__test__file.dat"),
CFile::modeCreate | CFile::modeReadWrite);
CAge age(21), *pAge;
// Create a storing archive.
CArchive arStore(&myFile, CArchive::store);
// Write the object to the archive
arStore.WriteObject(&age);
// Close the storing archive
arStore.Close();
// Create a loading archive.
myFile.SeekToBegin();
CArchive arLoad(&myFile, CArchive::load);
// Verify the object is in the archive.
pAge = (CAge*) arLoad.ReadObject(RUNTIME_CLASS(CAge));
ASSERT(age == *pAge);
必要条件
ヘッダー : afx.h