+ -
当前位置:首页 → 问答吧 →  error C2228: “.elem”的左边必须有类/结构/联合

error C2228: “.elem”的左边必须有类/结构/联合

时间:2011-12-04

来源:互联网

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> 转换丢失限定符
请大家看看是怎么回事?

作者: a18451175   发布时间: 2011-12-04

m.elem,m是个啥,数组啊

作者: bdmh   发布时间: 2011-12-04

m是个指针,要用 ->

作者: bdmh   发布时间: 2011-12-04

首先,m.elem有问题,m是个int型指针,它里面没有elem的成员函数,elem是Matrix类里面的并非int类里面的。其次,m是个指针,调用指针的方法应该用->

作者: wumuzi520   发布时间: 2011-12-04

那么应该怎样改啊

作者: a18451175   发布时间: 2011-12-04

m.elem(i,j)=n.elem(i,j);
改成
elem(i,j)=n.elem(i,j);

作者: riyueming184   发布时间: 2011-12-04