CArchive::GetObjectSchema
現在逆シリアル化されているオブジェクトのバージョンを判断するに Serialize の関数から呼び出します。
UINT GetObjectSchema( );
戻り値
逆シリアル化の際、読み込まれたオブジェクトのバージョン。
解説
この関数を呼び出すと、CArchive のオブジェクトが読み込まれている場合にのみ有効です (CArchive::IsLoading は、ゼロを返します)。これは、まず Serialize の関数と回しか呼び出すようになります。戻り値が (– 1) uintバージョン番号が不明であることを示します。
CObject派生クラス ( IMPLEMENT_SERIAL マクロに) つまり、Serialize のメンバー関数が複数バージョンを読み取ることができるオブジェクト」、「versionable オブジェクトを作成するスキーマのバージョンは、それ自体 ( ORをビットごとに使用します) 結合する VERSIONABLE_SCHEMA になります。既定のフレームワーク機能 ( VERSIONABLE_SCHEMAなし) バージョンが一致してをその場合は、例外をスローすることです。
使用例
IMPLEMENT_SERIAL(CSchemaObject, CObject, VERSIONABLE_SCHEMA | 1)
void CSchemaObject::Serialize(CArchive& ar)
{
CObject::Serialize(ar);
if (ar.IsLoading())
{
int nVersion = ar.GetObjectSchema();
switch(nVersion)
{
case 0:
// read in previous version of
// this object
break;
case 1:
// read in current version of
// this object
break;
default:
// report unknown version of
// this object
break;
}
}
else
{
// Normal storing code goes here
}
}
必要条件
ヘッダー : afx.h