I am struggling to get my head around operator overloading. In this case the + operator I have and example of what I have tried, any help would be greatly appreciated.
I am getting an error which says “invaild use of ‘class Matrix’ I am unsure on how to fix this how can I add these two Matrix objects together?
Matrix Matrix::operator+(const Matrix& rhs){
return Matrix(Matrix + rhs.Matrix());
}
Matrix::Matrix(int MM, int NN){
M = MM;
N = NN;
data = new double[M * N];
for ( int i =0; i < M; i++)
{
for (int j = 0; j < N; j++)
{
data[i* N+j] = (double) 1000 + i*N+j;
// cout << data[i*N+j] <<"\t";
}
//cout <<"\n";
}
cout << "Matrix Constructor... (code to be implemented here!!!)\n";}
Thanks
jpm’s answer is very important to look at. Once you’ve fixed these things, you can look at mine.
Essentially, an operator overload is no different than any other function.
So, in the case of:
What you’re really doing there is saying: add rhs to the current matrix, and return a new matrix. Your overload should not alter the current matrix. Help yourself and use a constant:
A matrix addition like that should first check if the matrices have the same dimensions so that you can add them together, then loop through all “cells” and add them, and create a matrix out of that. For that, I’m guessing you’ll need a second constructor, something like: