我原来的思路是在CMainFrame的OnFileOpen()函数中有一个寻找文件夹中的位图文件的while循环,在循环体中添加下面的代码
dib.Read(pPath);  //CDIB dib是CMainFrame的成员,pPath是所读取的位图的路径名字;m_ptr.Add(&dib);  //CPtrArray m_ptr;是CMainFrame中的成员但是这样就有一个问题由于每一次动态数组m_ptr存的都是dib这个对象的地址,所以m_ptr中所存的每一幅位图都是dib最后读取的位图,不是我所希望的结果求高手指教,怎么样才能够用动态数组去存放读取进来的每一幅位图呢

解决方案 »

  1.   

    CDIB *pdib = new CDIB;这样用,到移除的时候再delete
      

  2.   

    3楼能说的详细一点吗,我尝试过vector,但是v_dib.push_back(v_dib.end(),dib);的时候报错,好像是因为我写的CDIB中没有直接两个对象赋值的功能,但是我不知道该怎么改
      

  3.   

    可以吧数据分段读么?用指针定位下,每次都读取固定字节,然后用MAP存?
      

  4.   

    用指针的怎么会不行了
    CDIB *pdib= new CDIB;
    pdib->Read(pPath); //CDIB dib是CMainFrame的成员,pPath是所读取的位图的路径名字;m_ptr.Add(pdib); //CPtrArray m_ptr;是CMainFrame中的成员地址都改了,怎么会不行了,还有就是CDIB 需要是CObject的派生类
      

  5.   

    CDIB *pDib=new CDIB();
    m_ptrArray.Add(pDib);
    这是我的方法和原来的确实没什么变化
      

  6.   

    谢谢大家,我最后是用new的方法做到的