我建了个CObject的派生类(CTestList),如何把一个文件中的内容读入一个CObList中然后再把它一个一个的传给CTestList呢?

解决方案 »

  1.   

    我建了个CObject的派生类(CTestList)并重载了Serialize(),如何把一个文件中的内容读入一个CObList中然后再把它一个一个的传给CTestList呢?
      

  2.   

    要满足以下条件
    1. 有构造和析构
    2. DECLARE_SERIAL / IMPLEMENT_SERIAL 巨集
    3. 从CObject 派生
    4. 重载 Serialize()
    有上面的条件,你在DOC下的Serialize(),里面就可以用ar<<m_youObject
    和ar>>m_youObject 来实现串行化了!
      

  3.   

    我已经实现了楼上这位老兄所说的条件.
    我是这样定义的:
    CObList myObList;
    CMyOb   myOb;//CMyOb中有成员变量m_szOne,m_szTwo;
    CFile myFile;
    myFile.Open("c:\\myfile.dat",CFile::modeRead);
    CArchive ar(&myFile,CArchive::load);
    请问如何把myfile.dat中的内容传给myObList,再由myObList一个一个的传给myOb,以使m_szOne,m_szTwo得到值呢?
      

  4.   

    直接用
    ar<<m_szOne<<m_szTwoar>>m_szOne>>m_szTwo
    就可以,没必要用CObList myObList。
      

  5.   

    qdjiang兄:
    文件中有多个不同的m_szOne,m_szTwo值,即多个CMyOb实例,我只是想把它们得出逐个与当前的CMyOb对象的中的m_szOne,m_szTwo对比,以判断当前值是否存在于文件中,就象比对用户名和密码一样,这样我该如何逐个比校呢?
      

  6.   

    看看这个:CArchive arR(&f, CArchive::load);
    CWords curword;
    typedef CTypedPtrList<CObList, CWords*> CWordsList;
    CWordsList list;
    list.Serialize(arR);void CWords::Serialize(CArchive& ar)
    {
    CObject::Serialize( ar );
       
    if(ar.IsStoring())
    {
    ar << m_strWords;
    ar << m_strType;
    ar << m_strCh;
    ar << m_strPh;
    }
    else
    {
    ar >> m_strWords;
    ar >> m_strType;
    ar >> m_strCh;
    ar >> m_strPh;
    }
    }
      

  7.   

    再用上面的list做一个循环就行了。