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