小弟最近在写一个程序。需要将多个bmp位图进行加载,由于本人比较懒,所以想用CArray来存储这些加载的位图。如下: typedef struct MENUADDBMP
{
INT nItem;
CBitmap menuadd;
}MENUADDBMP;
typedef CArray<MENUADDBMP,MENUADDBMP&> m_arrMenuAddBmp;
m_arrMenuAddBmp m_MenuAddBmp;
但是再调用的时候,如下: CString str = "";
str = "icons/210.bmp";
MENUADDBMP st;
HBITMAP hbmp = (HBITMAP)LoadImage(NULL,str,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
st.nItem = 1;
st.menuadd.Attach(hbmp);
m_MenuAddBmp.Add(st);则会进行报错。
error C2582: 'CLayerCtlDlg::MENUADDBMP' : 'operator =' function is unavailable
        c:\program files\microsoft visual studio\vc98\mfc\include\afxtempl.h(1566) : while compiling class-template member function 'void __thiscall CArray<struct CLayerCtlDlg::MENUADDBMP,struct CLayerCtlDlg::MENUADDBMP &>::SetAtGrow(int,struct CLay
erCtlDlg::MENUADDBMP &)'
如何进行处理才能够运行正确,并将bmp进行加载?MFCCArray

解决方案 »

  1.   

    在'CLayerCtlDlg::MENUADDBMP' 结构中重载 'operator ='
      

  2.   

     MENUADDBMP& operator = (const MENUADDBMP toCopy)
            {
                nItem = toCopy.nItem;
                menuadd = toCopy.menuadd;//自己看一下 cbitmap有没有= 重载!
                return *this;
            }
      

  3.   


    error C2582: 'CBitmap' : 'operator =' function is unavailable这是什么原因?
      

  4.   

    typedef struct MENUADDBMP{  
      INT        nItem;  
      CBitmap    *menuadd;
    }MENUADDBMP;
      

  5.   

    typedef struct MENUADDBMP{  
      INT        nItem;   
     CBitmap   * menuadd;
    }MENUADDBMP;
      

  6.   

    我也遇到同样的问题:error C2582: 'CBitmap' : 'operator =' function is unavailable