我编写了一个 IntegerMatrix 类来添加我自己的方法来处理矩阵。现在我写了一个这样的函数:
IntegerMatrix** IntegerMatrix::multiplyMatrix(IntegerMatrix** table2)
(这是一个双指针,因为我持有大量指向 4x4 2D 数组的指针。)所以我可以这样做:
matrix1.multplyMatrix(matrix2)
一个小问题是*
没有为我自己的班级定义。所以我想重载这个运算符,我可以做这样的事情:
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.