我定义了一个画特定图形的类,因为此图形中包括许多数据量,所以我把这些数据第一在一个结构体当中
struct RECORD
{
UINT serial;                  // serial number
double EXLENGTH,EXWIDTH;
double INLENGTH,INWIDTH;
Position pacOrigin;           // the practical center
double m_Offset,m_Radian;
double cenExcurx,cenExcury;   
double fibExcurx,fibExcury;   
};
在类的存储时,我想用序列化函数serialize(CArchive& ar)
但不知道结构体应该如何实现序列化?
或者有更好的办法存储此结构体.
谢谢.

解决方案 »

  1.   

    简单的方法是从CObject继承
    使用 DECLARE_SERIAL
         IMPLEMENT_SERIAL 这对宏并重载Serialize函数
    具体可参考MSDN相关内容
      

  2.   

    结构体好象不能使用 serialize
    void CCreateMOne::Serialize (CArchive &ar)
    {
    if(ar.IsStoring())          
    ar << record;
    else
    ar >> record;
    }
    我这样定义后, 程序出错:
    C:\my project\SDI VFOS\CreateMOne.cpp(202) : error C2678: binary '<<' : no operator defined which takes a left-hand operand of type 'class CArchive' (or there is no acceptable conversion)
    C:\my project\SDI VFOS\CreateMOne.cpp(204) : error C2679: binary '>>' : no operator defined which takes a right-hand operand of type 'struct RECORD' (or there is no acceptable conversion)
    不明白是什么原因.
      

  3.   

    要求像上面那样,你必须重载>>,<<运算符
      

  4.   

    <<  >>运算符应该如何重载 找不到现有的例子
      

  5.   

    参看MFC中的类如何序列化的吧
      

  6.   

    void CCreateMOne::Serialize (CArchive &ar)
    {
    if(ar.IsStoring())   
    {       
       ar << record.serial;     
       ar << record.EXLENGTH; 
       ....           
    }
    else
       ar << record.serial;     
      ar << record.EXLENGTH; 
      ....
    }