CArray不能添加?

来源:百度知道 编辑:UC知道 时间:2024/07/04 15:28:52
请问以下代码为编译时老提示 error C2664: 'Add' : cannot convert parameter 1 from 'class temp' to 'class temp'
No copy constructor available for class 'temp'
而我要是把结构体里的CArray删了就不会出错?请问如何解决

struct temp
{
CString x;
CString y;
CArray <double,double> ay;
}ttt;
void CCkckkView::OnDdddd()
{
temp type;
type.x="X变量";
type.y="Y变量";
CArray <temp,temp> rr;
rr.Add(type);

}
class temp
{
public:
CString x;
CString y;
CArray <double,double> ay;

temp(){};
temp (temp &b)
{
x=b.x;
y=b.y;
for(int i=0;i<b.ay.GetSize();i++)
{ay.SetAt (i,b.ay.GetAt(i));}
}
};

void CCkckkView::OnDdddd()
{
temp type;
type.x="X变量";
type.y="Y变量";
CArray <temp,temp> rr;
rr.Add(type);

就像错误提示中所说的,temp没有合适的拷贝构造函数。
你需要自己实现一个拷贝构造函数,处理temp的成员变量ay的复制问题。
(有可能还需要实现赋值运算符)

补充:
新的错误提示就是说需要实现赋值运算符operator =