VC中的結構體和枚舉類型序列化

通常除了從CObject繼承的類重寫Serialize外,我們經常還遇到對自定義Struct, enum等的序列化,這裏就說說後兩個的可以方法:
一、結構體:
       struct   A
                 {  
                     int      a ;  
                     float   b;  
                  }structA;
       1    最簡單卻較繁瑣的方法:
              ar<<stuctA.a<<stuctA.b
        2   爲結構體添加 重載符:

              struct   A{  
                  int   a   ;  
                  float   b;  
                  friend   CArchive   &   operator   <<(CArchive   &   arc,A   &data);  
                  friend   CArchive   &   operator   >>(CArchive   &   arc,A   &data);  
              }  
   
             CArchive   &   operator   <<(CArchive   &   arc,A   &data)  
             {  
                 arc<<a<<b;  
                 return   arc;  
              }  
             CArchive   &   operator   >>(CArchive   &   arc,A   &data)  
             {  
                 arc>>a>>b  
                 return   arc;  
             }  
  二、枚舉類型:
           enum   Shape   {   rectangle,   roundRectangle,   ellipse,line,circle,picture,text,polygon   };      
           Shape   m_nShape;  
           ar   <<   (WORD)   m_nShape;     
           WORD   wTemp1;  
           ar   >>   wTemp1;   m_nShape   =   (Shape)wTemp1;  
發佈了19 篇原創文章 · 獲贊 3 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章