行列を操作する独自のメソッドを追加するために、IntegerMatrix クラスを作成しました。今、私はこのような関数を書きました:
IntegerMatrix** IntegerMatrix::multiplyMatrix(IntegerMatrix** table2)
(4x4 2D 配列へのポインターの巨大な配列を保持しているため、これは二重ポインターです。) したがって、次のように簡単に実行できます。
matrix1.multplyMatrix(matrix2)
1 つの小さな問題は、*
自分のクラスに対して定義されていないことです。そこで、この演算子をオーバーロードして、次のようなことができると考えました。
sum += this->table[i][k] * table2[k][j];
しかし、次のように定義されているオーバーロードされた演算子で正しいi
とを取得するにはどうすればよいですか。k
IntegerMatrix IntegerMatrix::operator*(const IntegerMatrix & k);
私が今理解できない唯一の問題は、正しい値を取得する方法ですか?
編集:
これを書き直したところ、次のようになりました。
IntegerMatrix IntegerMatrix::operator*(const IntegerMatrix & table2)
{
int i, j, k;
int sum;
IntegerMatrix * result = new IntegerMatrix(SIZE);
for (i = 0; i < SIZE; i++) {
for (j = 0; j < SIZE; j++) {
sum = 0;
for (k = 0; k < SIZE; k++) {
sum += this->table[i][k] * table2[k][j];
}
result[i][j] = sum;
}
}
return *result;
}
[] でエラーが発生します。
Binary '[' : 'IntegerMatrix' does not define this operator or a conversiont o a type acceptable to the predefined operator.