写了个IntArray,居然编译不过,请大家帮小弟我看看,就几句话
写了个IntArray,居然编译不过,请大家帮我看看,就几句话
class DavidIntArray
{
private:
int _size; //存储数组大小
int* ia; //存储数组指针
public:
DavidIntArray(const DavidIntArray& rhs); //用已有的DavidIntArray对象给当前对象赋值的构造函数
void init(int sz,int* array); //初始化DavidIntArray
inline int size() const; //得到数组大小
};
//用已有的DavidIntArray对象给当前对象赋值的构造函数
DavidIntArray::DavidIntArray(const DavidIntArray& rhs)
{
this-> init(rhs.size,rhs.ia);//Error
}
//初始化DavidIntArray
void DavidIntArray::init(int sz,int* array)
{
//设置数据成员
this-> _size=sz;
this-> ia=new int[this-> _size];
//初始化内存
for(int ix=0;ix <this-> _size;++ix)
{
if(!array)
{
this-> ia[ix]=0;
}
else
{
this-> ia[ix]=array[ix];
}
}
}
为什么这样调用this-> init(rhs.size,rhs.ia);会有错
------解决方案--------------------
this-> init(rhs.size,rhs.ia);
=============================
this-> init(rhs._size,rhs.ia);
------解决方案--------------------
DavidIntArray::DavidIntArray(const DavidIntArray& rhs)
{
this-> init(rhs.size,rhs.ia);//Error
}
===========================================================
this-> init(rhs._size,rhs.ia);
class DavidIntArray
{
private:
int _size; //存储数组大小
int* ia; //存储数组指针
public:
DavidIntArray(const DavidIntArray& rhs); //用已有的DavidIntArray对象给当前对象赋值的构造函数
void init(int sz,int* array); //初始化DavidIntArray
inline int size() const; //得到数组大小
};
//用已有的DavidIntArray对象给当前对象赋值的构造函数
DavidIntArray::DavidIntArray(const DavidIntArray& rhs)
{
this-> init(rhs.size,rhs.ia);//Error
}
//初始化DavidIntArray
void DavidIntArray::init(int sz,int* array)
{
//设置数据成员
this-> _size=sz;
this-> ia=new int[this-> _size];
//初始化内存
for(int ix=0;ix <this-> _size;++ix)
{
if(!array)
{
this-> ia[ix]=0;
}
else
{
this-> ia[ix]=array[ix];
}
}
}
为什么这样调用this-> init(rhs.size,rhs.ia);会有错
------解决方案--------------------
this-> init(rhs.size,rhs.ia);
=============================
this-> init(rhs._size,rhs.ia);
------解决方案--------------------
DavidIntArray::DavidIntArray(const DavidIntArray& rhs)
{
this-> init(rhs.size,rhs.ia);//Error
}
===========================================================
this-> init(rhs._size,rhs.ia);