我试图定义一个简单的类来处理2d矩阵,称为Matrix2D01,并且+运算符有问题.我有+ =运算符,工作正常,
Matrix2D01& Matrix2D01::operator+=(Matrix2D01& mat2) {
int i,j;
for (i=0;i<M;i++)
for (j=0;j<N;j++) mat[i][j]+=mat2[i][j];
return *this;
}
Run Code Online (Sandbox Code Playgroud)
定义了+运算符:
Matrix2D01 Matrix2D01::operator+(Matrix2D01& mat2) {
Matrix2D01 result(1,1);
result=*this;
result+=mat2;
return result;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试使用+运算符时,例如
mat3=mat1+mat2;
Run Code Online (Sandbox Code Playgroud)
编译器给出错误:
../MatrixGames.cpp:17:12: error: no match for ‘operator=’ in ‘mat3 = Matrix2D01::operator+(Matrix2D01&)((* & mat2))’
Run Code Online (Sandbox Code Playgroud)
如果有人能告诉我我做错了什么,我将不胜感激.
谢谢.
我也有一个=运算符定义,
Matrix2D01& Matrix2D01::operator=(Matrix2D01& mat2) {
if (this==&mat2) return *this;
int i,j;
for (i=0;i<M;i++) {
delete [] mat[i];
}
delete [] mat;
M=mat2.Dimensions()[0];
N=mat2.Dimensions()[1];
mat = new double* [M];
for (i=0;i<M;i++) {
mat[i]=new double [N];
} …Run Code Online (Sandbox Code Playgroud)