error C2228: “.elem”的左边必须有类/结构/联合
class Matrix
{
int* m;
int szl,szr;
public:
Matrix(int,int);
Matrix(const Matrix& n);
int& elem(int,int);
~Matrix();
};
Matrix::Matrix(int i,int j)
{
szl=i;szr=j;
m=new int[i*j];
}
Matrix::Matrix(const Matrix& n)
{
szl=n.szl;
szr=n.szr;
m=new int[szl*szr];
for(int i=0;i<szl;i++)
for(int j=0;j<szr;j++)
m.elem(i,j)=n.elem(i,j);
}
int& Matrix::elem(int i,int j)
{
if(i<0||szl<=i||j<0||szr<=j)
{
cerr<<"Matrix index out of range.\n";
exit(1);
}
return m[i*szr+j];
}
d:\users\administrator\documents\visual studio 2010\projects\hw6_2\hw6_2\hw6_2.cpp(58): error C2228: “.elem”的左边必须有类/结构/联合
1> 类型是“int *”
1>d:\users\administrator\documents\visual studio 2010\projects\hw6_2\hw6_2\hw6_2.cpp(58): error C2662: “Matrix::elem”: 不能将“this”指针从“const Matrix”转换为“Matrix &”
1> 转换丢失限定符
请大家看看是怎么回事?
[解决办法]
m是个指针,要用 ->
[解决办法]
m.elem(i,j)=n.elem(i,j);
改成
elem(i,j)=n.elem(i,j);