次の方法で共有


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

参照

関連項目

CArchive クラス

階層図

CObject::Serialize

CObject::IsSerializable

IMPLEMENT_SERIAL

DECLARE_SERIAL

CArchive::IsLoading