小编use*_*480的帖子

如何正确重载+运算符

我试图定义一个简单的类来处理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)

c++ operator-overloading operators

5
推荐指数
1
解决办法
192
查看次数

标签 统计

c++ ×1

operator-overloading ×1

operators ×1