我自己做实验,写了下面这个可序列化的类:
Ser.h
class CSer : public CObject  
{
DECLARE_SERIAL(CSer)
public:
void Serialize(CArchive &ar);
CSer();
virtual ~CSer();
CString str;
};Ser.cpp
IMPLEMENT_SERIAL(CSer,CObject,1)
CSer::CSer()
{}CSer::~CSer()
{}void CSer::Serialize(CArchive &ar)
{
CObject::Serialize(ar);
if(ar.IsStoring())
{
ar<<str;
}
else
{
ar>>str;
}
}
使用这个类:
CFile file("1.txt",CFile::modeCreate | CFile::modeWrite);
    CArchive ar(&file,CArchive::store);
CSer ser;
ser.str="dadada";
ar<<ser;             //这行编译出错错误信息为:
error C2678: binary '<<' : no operator defined which takes a left-hand operand of type 'class CArchive' (or there is no acceptable conversion)看说明上不是说用了IMPLEMENT_SERIAL就不再需要重载<<运算符了吗?怎么还报错呢?