实现类对串行化的支持

分五步!

第一,修改CXXX类的定义,让其从CObject派生,即在XXX.h文件中将CXXX的定义改为:

class CXXX :public CObject

 

第二,

重载Serialize函数,在XXX.h中增加该函数的声明:

void Serialize(CArchive &ar);

并在XXX.cpp中实现这个函数,

void CGraph::Serialize(CArchive &ar)
{
 if(ar.IsStoring())
 {
  // add your codes

 }
 else
 {
 //  add your codes

 }
}

  

 

第三,在声明XXX类时,用DECLARE_SERIAL宏,即在XXX.h头文件中,在CXXX类定义的内部添加: DECLARE_SERIAL(CXXX)

例如:

class CGraph :public CObject
{
	DECLARE_SERIAL(CGraph)
public:
	void Draw(CDC *pDC);
	void Serialize(CArchive &ar);
	CPoint m_End;
	CPoint m_Origin;
	CGraph();
	CGraph(CPoint a,CPoint b);
	virtual ~CGraph();

};

  

第四,为CXXX类定义一个不带参数的构造函数

 

第五,在CXXX类的实现文件中使用IMPLEMENT_SERIAL宏,即在XXX.cpp源文件中,在CXXX类的构造函数前面添加下面这句话:

IMPLEMENT_SERIAL(CXXX,CObject,1) //参数说明:类名,基类名,版本号

例如:

IMPLEMENT_SERIAL(CGraph,CObject,1)

CGraph::CGraph()
{

}

  

转载于:https://www.cnblogs.com/ka200812/archive/2012/04/18/2455889.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值