关于序列化自定义的数据类型的问题
如果我自定义个派生于CObject的CMyObject,其中增加了两个数据类型TYPE1 type1; TYPE2 type2;
如果我在文档类中定义了CList<CMyObject*,CMyObject*> m_MyObjectList;
那么文档类和CMyObject类的Serialize函数分别该怎么写?需要重载SerializeElements吗?
对于一个对象a,什么情况下,可以直接ar<<a;什么情况下,a.Serialize(ar)???
问题点数:0、回复次数:2Top
1 楼pomelowu(羽战士)回复于 2004-09-04 20:31:24 得分 0
需要重载操作符 << 和 >>,具体实现请看《深入浅出MFC》Top
2 楼kpld8888(kpld)回复于 2004-09-05 00:39:28 得分 0
void CMyObject::Serialize(CArchive& ar)
{
if( ar.IsLoading() )
{
ar>>type1;
ar>>type2
}
else
{
ar<<type1;
ar<<type2;
}
CObject::Serialize( ar );
}
void CMyDoc::Serialize(CArchive& ar )
{
int nCount = m_MyObjectList.GetCount();
for( int i=0; i<nCount; i++ )
{
CMyObject* pObj = m_MyObjectList.GetAt(i);
pObj->Serialize(ar);
}
CDocument::Serialize(ar);
}
Top




