CArchive::SerializeClass
void SerializeClass(const CRuntimeClass* pRuntimeClass);
参数:
pRuntimeClass | 指向基类的运行类对象的指针。
|
说明:
当想存储和装载一个基类的版本信息时,调用此成员函数。SerializeClass读或对CArchive对象写一个类的参考,取决于CArchive的方向。使用SerializeClass来代替ReadClass和WriteClass,可以使得更方便地串行化基类对象。因为SerializeClass需要较少的代码和参数。
像ReadClass一样,SerializeClass证明了归档文件信息与的例程类兼容。如果不兼容,则SerializeClass将一个CArchiveException。
运行类必须使用DECLARE_SERIAL和IMPLEMENT_SERIAL,否则,SerializeClass将会一个CNotSupportException。
使用RUMTIME_CLASS宏,恢复pRuntimeClass参数的值。基类必须已经使用IMPLEMENT_SERIAL宏。
示例:
class CBaseClass:public CObject{...};
class CDerivedClass:public CBaseClass{...};
void CDerivedClass::Serialize(CArchive& ar)
{
if(ar.IsStoring( ))
{
//normal code for storing contents
//of this object
}
else
{
//normal code for reading contents
//of this object
}
//allow the base class to serialize along
// with its version information
ar.SerializeClass(RUNTIME_CLASS(CBaseClass));
CBaseClass::Serialize(ar);
}
请参阅:
CArchive::ReadClass, CArchive::WriteClass, CArchive::GetObjectSchema, CArchive::SetObjectSchema, CArchiveException, CNotSupportedException