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

博客介绍了CPerson类序列化的五个步骤,包括派生自CObject、重载Serialize、写入DECLARE_SERIAL、生成无参构造函数、写入IMPLEMENT_SERIAL,还给出了调用方法,并展示了CPerson.h和CPerson.cpp的代码示例。

----例子来自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 )

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值