zoukankan      html  css  js  c++  java
  • 实现类对串行化的支持

    分五步!

    第一,修改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()
    {
    
    }
    

      

  • 相关阅读:
    SDUSTOJ 1466
    UVa
    51Nod
    UVa
    easyui-启用禁用方法
    设置系统时间
    移除/添加属性
    .net生成二维码图片
    Mysql数据库误删恢复
    js 加减乘除运算
  • 原文地址:https://www.cnblogs.com/ka200812/p/2455889.html
Copyright © 2011-2022 走看看