C++中CArray作为形参类型的问题

来源:百度知道 编辑:UC知道 时间:2024/06/03 08:22:34
class Cbase
{
public:
CArray<int,int> a;
void Seta(CArray<int,int> b,int c);
};

void Cbase::Seta(CArray<int,int> b,int c)
{
a.SetSize(c);
for (int i=0;i<3;i++)
a[i]=b[i];
}

void bb()
{
Cbase d;
CArray<int,int> a;
a.SetSize(3);
a[0]=1;
a[1]=2;
a[2]=3;
d.Seta(a,3);
printf("%d,%d,%d\n",d.a[0],d.a[1],d.a[2]);
}

请问这个错在哪里?
错误信息:
cannot convert parameter 1 from 'CArray<TYPE,ARG_TYPE>' to 'CArray<TYPE,ARG_TYPE>'

看信息的后半句,no copy constructor available for class 'CArray<int,int>'
编译器并不会为CArray<int,int>生成拷贝构造函数.
解决的方法有两种,一是把参数改成指针类型,二是你自己从CArray派生一个类并实现拷贝构造函数.

CArray是什么东西...有代码吗?