0
CPP-file:

Matrix2x2& operator +=(const Matrix2x2 & rhs)
{
    for (int i = 0; i < 2; i++)
    {
        for (int n = 0; n < 2; n++)
        {
            this->anArray.[i][n] += rhs.anArray[i][n];
        }
    }
    return *this;
}

头文件:

class Matrix2x2
{
private:
    double anArray[2][2];
public:
    Matrix2x2();
    Matrix2x2(int a, int b, int c, int d);
    void setArrayValues(int row, int column, double value);
    const double getArrayValues(int row, int column) const;
    Matrix2x2& operator +=(const Matrix2x2 & rhs)
};

主文件:

Matrix2x2 aMatrix(4,4,4,4);
Matrix2x2 bMatrix;
aMatrix += bMatrix;

当我尝试运行它时,我得到了这个:

错误:'Matrix2x2& operator+=(const Matrix2x2&)' 必须正好有两个参数

我看不出为什么?

我把它换成了

Matrix2x2& Matrix2x2::operator+=(const Matrix2x2 & rhs);

然后我得到了这些错误:

error: extra qualification 'Matrix2x2::' on member 'operator+='

在头文件和

error: expected unqualified-id before '[' token|

在这一行:

 this->anArray.[i][n] += rhs.anArray[i][n];

更新2

我已经在头文件中向您展示了我的类声明、主文件中的调用以及我的 cpp 文件中的函数定义。还有什么可以展示的?我目前已更正您指出的所有内容,但我仍然遇到相同的错误之一:

error: extra qualification 'Matrix2x2::' on member 'operator+=

在cpp和头文件中。

4

1 回答 1

2

好吧,一大堆问题。

首先,在你的头文件中,这一行需要在类声明Matrix2x2(最好在public:标签下)

Matrix2x2& operator +=(const Matrix2x2 & rhs);

其次,您需要将您的定义放在 CPP 文件中,它需要看起来像这样:

Matrix2x2& Matrix2x2::operator+=(const Matrix2x2 & rhs)
{
    for (int i = 0; i < 2; i++)
    {
        for (int n = 0; n < 2; n++)
        {
            this->anArray[i][n] += rhs.anArray[i][n];
        }
    }
    return *this;
}

.第三,你的 for 循环中有一个额外的 " "。将其更改为:

this->anArray.[i][n] += rhs.anArray[i][n];

至:

this->anArray[i][n] += rhs.anArray[i][n];

我不能保证没有更多问题。但这些是我根据您向我们展示的内容看到的。

于 2013-03-15T20:30:50.267 回答