写了个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);