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&)'は正確に2つの引数を取る必要があります

理由がわかりませんか?

に置き換えました

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];

UPDATE2

ヘッダーファイルでのクラス宣言、メインファイルでの呼び出し、およびcppファイルでの関数定義を示しました。他に何を表示しますか?私は現在、あなたが指摘したことをすべて修正しましたが、それでも同じエラーの1つが発生します。

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 に答える