I have written a code to find sum of two matrices using dynamic allocation and operator overloading.
#include<iostream>
#include<new>
using namespace std;
class matrix
{
int**m;
int r;
int c;
public:
matrix(int a, int b)
{
r = a;
c = b;
m = new int*[r];
for (int i = 0; i < r; i++)
m[i] = new int[c];
}
~matrix()
{
for (int i = 0; i < r; i++)
delete[] m[i];
delete[] m;
}
friend istream &operator>>(istream &in, matrix s);
friend matrix operator+(matrix& m1, matrix& m2);
friend ostream &operator<<(ostream &out, matrix s);
};
istream &operator>>(istream &in, matrix s)
{
cout << "enter elements" << endl;
for (int i = 0; i < s.r; i++)
{
for (int j = 0; j < s.c; j++)
{
in >> s.m[i][j];
}
}
return in;
}
ostream &operator<<(ostream &out, matrix s)
{
for (int i = 0; i < s.r; i++)
{
cout << " ";
for (int j = 0; j < s.c; j++)
out << s.m[i][j] << " ";
cout << endl;
}
return out;
}
matrix operator+(matrix& m4, matrix& m5)
{
matrix m6(m4.r, m4.c);
for (int i = 0; i < m4.r; i++)
{
for (int j = 0; j < m4.c; j++)
{
m6.m[i][j] = m4.m[i][j] + m5.m[i][j]; //gets stuck here!
}
}
return m6;
}
int main()
{
int r, c;
cout << "enter number of rows and columns" << endl;
cin >> r >> c;
matrix m1(r, c), m2(r, c), m3(r, c);
cin >> m1;
cin >> m2;
m3 = m1 + m2;
cout << m3;
return 0;
}
When I execute, I get stuck at matrix operator+(matrix &m4,matrix &m5)
.
I searched on internet but I'm unable to find my error.So, what's wrong with my code? It works fine in Code::Blocks but not in Xcode.