CArchive::GetObjectSchema
UINT GetObjectSchema( )
返回值:返回在非串行化过程中,被读入对象的版本。
说明:
由Serialize函数调用此函数,确定当前被非串行化的对象的版本。当CArchive对象正在被装载时,调用此函数才是有效的(CArchive::IsLoading则返回非零值)。它必须是Serialize函数的第一次调用而且只能调用一次。返回值-1(UINT)说明版本数未知。
CObject派生类可以使用与大纲版本自己(在IMPLEMENT_SERIALH宏里)结合起来使用的VERSIONABLE_SEHEMA,创建一个“版本化对象”,即一个对象它的成员函数可以读入多个版本。当版本不匹配时,缺省的框架功能(不带有VERSIONABLE_SHEMA)将异常信号。
示例:
IMPLEMENT_SERIAL(CMyObject,CObject,VERSIOANABLE_SCHEMA|1)
void CMyObject::Serialize(CArchive& ar)
{
if (ar.Isloading( ))
{
int nVersion = ar.GetObjectSchma( );
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 soring code goes here
}
}
请参阅:
CObject::Serialize, CObject::IsSerializable, IMPLEMENT_SERIAL, DECLARE_SERIAL, CArchive::IsLoading