2 wurunbing wurunbing 于 2016.03.14 12:28 提问

No copy constructor available for class怎么解决呢
 struct stuFileData
{ 
    CString csIndex;    
    CString csTime;     
    CString csFunction;
    CString csLen;  
    CString csData;     
    CString csOneLine;


    //0为Normal
    //1000为随机cmd 
    //1001为连接手机中断
    int     CmdFlag;    

    stuFileData(CString csTmp)
    {
        if (csTmp.GetLength()>66)
        {
            //略
        }
        else
        {
            //略
        }
    }
    stuFileData()
    {
            //略
    }

    stuFileData(const stuFileData &p)
    {

        csIndex = p.csIndex;
        csTime  = p.csTime;
        csFunction = p.csFunction;
        csLen = p.csLen;
        csData = p.csData;
        csOneLine = p.csOneLine;
        CmdFlag =  p.CmdFlag;
    }
}; 

typedef  CArray<stuFileData, stuFileData> DataPacketCArray;

DataPacketCArray b;
//初始化b,这里不写了

DataPacketCArray a=b;

最后这个时,报

 No copy constructor available for class 'CArray<struct stuFileData,struct stuFileData>'

怎么解决呢

5个回答

caozhy
caozhy   Ds   Rxr 2016.03.14 12:32

说的很清楚,定义一个拷贝构造函数
public: stuBushFileData(stuBushFileData & data)
{
... //在这里赋值
}

wurunbing
wurunbing 用for(){a.Add(b.GetAt(i));}这样把b信息传给a了
一年多之前 回复
wurunbing
wurunbing 用for(){a.Add(b.GetAt(i));}这样把b信息传给a了
一年多之前 回复
wurunbing
wurunbing 把for()
一年多之前 回复
wurunbing
wurunbing 问题我更新了一下, 结构体里面的拷贝构造函数有赋值的
接近 2 年之前 回复
enpterexpress
enpterexpress   2016.03.14 13:21
renwotao2009
renwotao2009   2016.03.14 13:27

无拷贝构造函数,楼上已说

wurunbing
wurunbing 没明白,我结构体里面是有拷贝构造函数吗?--->stuFileData(const stuFileData &p)
接近 2 年之前 回复
John_ToStr
John_ToStr   Rxr 2016.03.16 15:04

你的 Carray 在哪里定义的???

template
class CArray
{
//略
};
typedef CArray DataPacketCArray;

John_ToStr
John_ToStr 回复wurunbing: 那你看头文件包进来了吗,包对了吗?
一年多之前 回复
wurunbing
wurunbing 在这个里面啊:Microsoft Visual Studio\VC98\MFC\Include\AFXTEMPL.H
一年多之前 回复
John_ToStr
John_ToStr   Rxr 2016.03.16 15:04

不是拷贝构造的问题,你有写

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!