typedef struct msgrecord
{
//int nLen;              //此结构的长度
tm time;
CString strFromID;
CString strFromAlias;
CStringArray strArrID;
CStringArray strArrAlias;
CString strMessage;
msgrecord& operator= (msgrecord mr)
{
        strFromAlias = mr.strFromAlias;
strFromID = mr.strFromID;
strMessage = mr.strMessage;
time = mr.time;
strArrID.Copy(mr.strArrID);
strArrAlias.Copy(mr.strArrAlias); return *this;
};
}MSGRECORD,*PMSGRECORD;CArray<MSGRECORD,MSGRECORD> arr;
MSGRECORD msg;
arr.Add(msg);时会出如下错误,怎么解决啊?????????????????
error C2440: 'type cast' : cannot convert from 'struct msgrecord' to 'struct msgrecord'
No copy constructor available for struct 'msgrecord'

解决方案 »

  1.   

    你用CArray存放结构的指针就好了,你的拷贝构造函数没有实现
      

  2.   

    用指针数组时需要NEW吧????????????
      

  3.   

    在内部写入:
    MSGRECORD msg;
    char * pms = new char[sizeof(MSGRECORD) + msg.strMessage.GetLength()-4];
    memcpy(pms,&msg,sizeof(MSGRECORD) + msg.strMessage.GetLength()-4);

    arrMsgRecord.Add(pms);
    在外面这样读:
    MSGRECORD msg;
    memcpy(&msg, (::PMSGRECORD)arr.GetAt(0),sizeof(msg));
    CString str = msg.strArrID.GetAt(0);
    str = msg.strArrAlias.GetAt(0);但是内容并不对.怎么办啊??
      

  4.   

    这样写就可以了:
    #include <afxtempl.h>
    CArray<MSGRECORD,MSGRECORD&> arr;
      

  5.   

    void Get(CPtrArray &arr)
    {
    //::MSGRECORD为一不定长结构
    int nLen = (sizeof(::MSGRECORD) + msg.strMessage.GetLength()-4); char * pms = new char[sizeof(::MSGRECORD) + msg.strMessage.GetLength()-4];
    memset(pms,0,nLen);
    memmove(pms,&msg,sizeof(::MSGRECORD) + msg.strMessage.GetLength()-4);

    arr.Add(pms);}void main()
    {
       CPtrArray arr;
       Get(arr);
       //这里arr得不到值,应怎么做??}