【发布时间】:2015-04-09 07:12:12
【问题描述】:
我正在使用简单的二维数组,但在我的复制构造函数中我遇到了一个问题。 这是我的代码的摘录:
//default constructor
Matrix::Matrix(int r, int c)
{
rows = r;
cols = c;
mainArray = new int[rows*cols];
array = new int *[rows];
for (int i = 0; i < rows; i++)
array[i] = mainArray + (i*cols);
}
//at member
int& Matrix::at(int i, int j)
{
return array[i][j];
}
//copy constructor
Matrix::Matrix(const Matrix & obj)
{
rows = obj.rows;
cols = obj.cols;
mainArray = new int[rows*cols];
array = new int *[rows];
for (int i = 0; i < rows; i++)
array[i] = mainArray + (i*cols);
}
for (int i = 0; i < obj.rows; i++)
{
for (int j = 0; j < obj.cols; j++)
at(i, j) =obj.at(i,j);//PROBLEM
}
}
当我尝试分配 at(i,j)=obj.at(i,j) 时,我得到了这个:
对象具有与成员函数不兼容的类型限定符
据我所知,复制构造函数应该由(const class& obj) 传递。
我该怎么办?
【问题讨论】:
标签: c++ matrix copy-constructor