首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于重载运算符时CLIST的复制

2013-06-26 
求助 关于重载运算符时CLIST的复制在编写MFC时,由于出现了C2248错误,必须用到类的运算符重载,别人用的是CA

求助 关于重载运算符时CLIST的复制
在编写MFC时,由于出现了C2248错误,必须用到类的运算符重载,别人用的是CArray,链接如下:
http://www.cppblog.com/hlong/archive/2007/11/20/37015.html

我用的代码如下


class Equipment
{
public:
CString id;//设备id

CString Vol;//电压等级
CList<CPoint,CPoint&> Out;//设备出线端(1-n个)
CList<Equipment,Equipment&> Connected;//相连设备(1-n个)

Equipment & operator=(const Equipment &t1){
if(this!=&t1)
{
this->id=t1.id;
this->Vol=t1.Vol;
//用循环复制的方法
POSITION pos=t1.Out.GetHeadPosition();
this->Out.RemoveAll();
while(pos!=NULL)
{
this->Out.AddTail(t1.Out.GetNext(pos));
}
//用直接复制的方法
Connected.RemoveAll();
Connected.AddHead(t1.Connected);

}
        return *this;
     }
};

结果在addtail或者addhead处报错:没有与参数列表匹配的重载函数实例
希望各位高手给个解决方案(话外音:为什么叫我一个做网页的来搞MFC啊……) CList复制? CList复制 运算符重载
[解决办法]
你看看GetNext的返回值是什么,总之AddTail里需要一个该List定义的元素类型
Connected.AddHead(t1); // 这里很明显应该是t1,
[解决办法]
把你的声明
CList<CPoint,CPoint&> Out;        //设备出线端(1-n个)
CList<Equipment,Equipment&> Connected;        //相连设备(1-n个)
第二个模板参数加上const
CList<CPoint, const CPoint&> Out;        //设备出线端(1-n个)
CList<Equipment, const Equipment&> Connected;        //相连设备(1-n个)
或者干脆去掉,因为第二个模板参数默认就是第一个参数的const引用
CList<CPoint> Out;        //设备出线端(1-n个)
CList<Equipment> Connected;        //相连设备(1-n个)

热点排行