怎样令到一个Class可以有Serialize能力...

王朝vc·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

----例子来自MSDN----

五个步骤:

1.这个对象(如CPerson)派生自CObject.(ClassWizard不能生成这种类,只能直接新建类)

2.重载Serialize

3.类定义里面要写入

DECLARE_SERIAL( CPerson )(注意,没有分号)

4.要生成一个该类的构造函数,没有参数的.

5.类的实现里面要写入对应的

IMPLEMENT_SERIAL( CPerson, CObject, 1 )

调用的方法:CDoc里面建立个CPerson类型的m_Obj,然后在CDoc的Serialize中有m_Obj.Serialize(ar)

-------------CPerson.h-------------------

class CPerson : public CObject

{

public:

DECLARE_SERIAL( CPerson )

// empty constructor is necessary

CPerson(){};

CString m_name;

WORD m_number;

void Serialize( CArchive& archive );

// rest of class declaration

};

-------------CPerson.cpp-------------------

void CPerson::Serialize( CArchive& archive )

{

// call base class function first

// base class is CObject in this case

CObject::Serialize( archive );

// now do the stuff for our specific class

if( archive.IsStoring() )

archive << m_name << m_number;

else

archive >> m_name >> m_number;

}

IMPLEMENT_SERIAL( CPerson, CObject, 1 )

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航