Я собираюсь сделать удар и предположить, что ваш класс матрицы выглядит примерно так:
class Matrix
{
public:
int width;
int height;
int data[width][height];
}
Если вы хотите добавить две матрицы, вам нужна какая-то функция, которая берет две матрицы и создает третью матрицу, так что каждое значение в данных является сложением двух соответствующих значений в исходных матрицах. Одна из таких функций может выглядеть так:
Matrix add(const Matrix& lhs, const Matrix& rhs)
{
Matrix output;
for(int row = 0; row < lhs.height; ++row)
{
for(int column = 0; column < lhs.widtht; ++column)
{
output.data[row][column] = lhs.data[row][column] + rhs.data[row][column];
}
}
return output;
}
Мы собираемся предположить, что матрицы имеют одинаковый размер, и игнорируем проблемы, вызываемые матрицами разных размеров. Таким образом, все, что мы делаем, это перебираем обе матрицы и добавляем значения в новую матрицу. Теперь мы можем назвать код как:
Matrix a; // Pretend this already has data
Matrix b; // Ditto
Matrix c = add(a, b);
Вы можете видеть, куда это идет, все, что осталось, это сделать его оператором, как правило, когда вы набираете
a + b
То, что на самом деле видит компилятор, это
operator+(a, b)
Так что все, что осталось, это переименовать функцию добавления в
Matrix operator+(const Matrix& lhs, const Matrix& rhs)