CArchive::GetObjectSchema

Эта функция вызывается из функции Serialize для указания версии объекта, который в настоящее время десериализации.

UINT GetObjectSchema( );

Возвращаемое значение

Во время десериализации версия считываемого объекта.

Заметки

Вызовом этой функции допустим только в том случае, когда объект CArchive загружается (CArchive::IsLoading возвращает ненулевое).Должно быть первым вызовом функции Serialize и Позвонимым только один раз.Возвращаемое значение (– 1UINT) указывает на то, что номер версии неизвестен.

CObject- производный класс может использоваться в сочетании с помощью VERSIONABLE_SCHEMA (побитовое OR) с версией самой схемы (в макросе IMPLEMENT_SERIAL ), чтобы создать "versionable объект", то есть объект, функция-член Serialize может считывать нескольких версий.По умолчанию функциональные возможности платформы (без 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
   }
}

Требования

Header: afx.h

См. также

Ссылки

Класс CArchive

Диаграмма иерархии

CObject::Serialize

CObject::IsSerializable

IMPLEMENT_SERIAL

DECLARE_SERIAL

CArchive::IsLoading