Geometry *pGeo=NULL;
ar>>pGeo;//链接时好像是这里出的错你应该先new空间,再序列化吧

解决方案 »

  1.   

    那引入动态库的lib文件了么?
      

  2.   

    导入了
    所有代码链接:http://download.csdn.net/detail/wahahahawa1/7936685
    另外将serialize中的代码该成如下时,读文件就会提示 :意外的文件格式!
    void CPaintDoc::Serialize(CArchive& ar)
    {
    if (ar.IsStoring())
    {
    // TODO: 在此添加存储代码
    }
    else
    {
    // TODO: 在此添加加载代码 }
    m_obArray.Serialize(ar);
    }
      

  3.   

    需要在Geometry类中重载 >> 操作符;或者你写成
     ar>>m_nCount;
            for (int i=0;i<m_nCount;i++)
            {
                Geometry *pGeo= new Geometry;
                pGeo->Serialize(ar);
                m_obArray.Add(pGeo);
            }
      

  4.   

    程序代码链接http://download.csdn.net/detail/wahahahawa1/7936685
      

  5.   

    你把
    for (int i=0;i<m_obArray.GetSize();i++)
            {
                Geometry *pGeo=(Geometry*)m_obArray[i];
                ar<<pGeo;
            }
    改为:
    for (int i=0;i<m_obArray.GetSize();i++)
            {
                Geometry *pGeo=(Geometry*)m_obArray[i];
                pGeo->Serialize(ar);
            }
    就好了。
      

  6.   


    改了之后,链接没有问题了,只是后面打开文件时读取数据错误
    在Geometry-> serilize保存时数据没错,而打开文件后,用Geometry->serialize读取的数据就乱了
    还请版主帮忙调试一下……
      

  7.   

    doc中的代码如下:
    if (ar.IsStoring())
    {
    // TODO: 在此添加存储代码
    ar<<m_obArray.GetSize();
    for (int i=0;i<m_obArray.GetSize();i++)
    {
    Geometry *pGeo=(Geometry*)m_obArray[i];
    pGeo->Serialize(ar);
    }
    }
    else
    {
    // TODO: 在此添加加载代码
    ar>>m_nCount;
    for (int i=0;i<m_nCount;i++)
    {
    Geometry *pGeo=new Geometry();
    pGeo->Serialize(ar);
    m_obArray.Add(pGeo);
    } }
    测试无误,可以读写
      

  8.   

    不是吧!这个…… 莫非跟电脑有关系?!另外 把代码改成void CPaintDoc::Serialize(CArchive& ar)
    {
    if (ar.IsStoring())
    {
    // TODO: 在此添加存储代码
    }
    else
    {
    // TODO: 在此添加加载代码
    }
    m_obArray.Serialize(ar);
    }
    版主再 重新画图 保存后  试试读取会不会有错误?    我的是: