Visual c++ 带运算符的CArchive序列化<<&燃气轮机&燃气轮机;未找到使用cArchive类型左手的操作员

Visual c++ 带运算符的CArchive序列化<<&燃气轮机&燃气轮机;未找到使用cArchive类型左手的操作员,visual-c++,serialization,mfc,carchive,Visual C++,Serialization,Mfc,Carchive,在本教程之后,我实现了以下代码: class Esame: public CObject { public: INT voto; INT crediti; BOOL lode; CString nome; Esame(){} Esame(CString nome, INT voto, BOOL lode, INT crediti) :nome(nome), voto(voto), lode (lode), crediti(crediti) {} void Serialize(CArc

在本教程之后,我实现了以下代码:

class Esame: public CObject
{

public:

INT voto;
INT crediti;
BOOL lode;
CString nome;
Esame(){}
Esame(CString nome, INT voto, BOOL lode, INT crediti) :nome(nome), voto(voto), lode    (lode), crediti(crediti) {}

void Serialize(CArchive& ar);

protected:
DECLARE_SERIAL(Esame)
};

IMPLEMENT_SERIAL(Esame, CObject, 1)

void Esame::Serialize(CArchive& ar){
CObject::Serialize(ar);
if (ar.IsStoring())
{       
    ar << voto << lode << crediti;
}
else
{       
    ar >> voto >> lode >> crediti;
}
}
类Esame:公共对象
{
公众:
INT voto;
国际信贷;
布尔矿脉;
CString-nome;
以扫(){}
以赛姆(CString nome,INT voto,BOOL lode,INT crediti):nome(nome),voto(voto),lode(lode),crediti(crediti){}
无效序列化(CArchive&ar);
受保护的:
声明序列号(Esame)
};
机具_系列(Esame、CObject、1)
void Esame::序列化(CArchive&ar){
CObject::序列化(ar);
if(ar.IsStoring())
{       
ar>lode>>crediti;
}
}
然后我叫:

CFile file(_T("file.and"), CFile::modeCreate);
CArchive afr(&file, CArchive::store);
Esame e;
afr << e;
CFile文件(\u T(“file.and”),CFile::modeCreate);
CArchive-afr(文件,CArchive::store)(&file);
以赛亚;

afr这是因为您没有提供
operator
afr ok的重载,但因此我失去了使用CArchive的“舒适感”:我可以简单地重载>任何祖先类;CArchive的帮助是(我相信)自动执行>操作符的重载(我认为这是通过声明\u SERIAL和实现\u SERIAL宏实现的)。重载>手动操作通常是系统中最常用的操作
CFile file(_T("file.and"), CFile::modeCreate);
CArchive afr(&file, CArchive::store);
Esame e;
e.Serialize(ar);
void CCompoundObject::Serialize( CArchive& ar )
{
   CObject::Serialize( ar );    // Always call base class Serialize.
   m_myob.Serialize( ar );    // Call Serialize on embedded member.
   m_pOther->Serialize( ar );    // Call Serialize on objects of known exact type. 

   // Serialize dynamic members and other raw data 
   if ( ar.IsStoring() )
   {
      ar << m_pObDyn;
      // Store other members
   }
   else
   {
      ar >> m_pObDyn; // Polymorphic reconstruction of persistent object  
      //load other members
   }
}
afr << &e;