i write a class and i have a problem with adding matrices. I know that i have to overload operator +, but i don't know how exactly. any ideas ?
 class CMatrix
  {
    private:
            int Rows;
            int Columns;
            float* pData;
    public:
            CMatrix(void);
            CMatrix(int rows, int columns);               
            void setElement(int row, int column, float element);
            float getElement(int row, int column);
   ...};
    istream& operator>>(istream& in, CMatrix& matrix)
     {
in >> matrix.Rows;
in >> matrix.Columns;
for(int i = 0; i < matrix.Rows; i++)
    for(int j = 0; j < matrix.Columns; j++)
        in >> *(matrix.pData + i * matrix.Columns + j);
return in;
    }
      CMatrix::CMatrix(int rows, int columns)
    {
    Rows = rows;
    Columns = columns;
    pData = new float[Rows * Columns];
    float* pEnd = &pData[Rows * Columns];
    for(float* p = pData; p < pEnd; p++)
            *p = 0.0;
      } 
    void CMatrix::setElement(int row, int column, float element)
    {
     *(pData+  row * Columns + column) = element;
     }
    float CMatrix::getElement(int row, int column)
     {
       return *(pData + row * Columns + column);
      }
I overloaded operators '<<' ,'>>' , but i have a problem with operator +.
Unfortunatelly i have less than 10 reputation...so If i write:
 CMatrix operator+(const CMatrix &lhs, const CMatrix &rhs)
    {
 Cmatrix result (Rows,Columns);
for(int i=0; i <Rows ; i++)
for( int j=0; j<Columns; j++)
 result.setElement(i,j)  = lhs.getElement(i,j) + rhs.getElement(i,j);   
return result;      
 }
 int main()
   {
const int n = 10, m = 5;
 CMatrix m1(n, m);
     CMatrix m2(n, m);
for(int i = 0; i < n; i++)
    for(int j = 0; j < m; j++)
        m1.setElement(i, j, (float)(i * m + j));
    for(int i = 0; i < n; i++)
        for(int j = 0; j < m; j++)
        m2.setElement(i, j, (float)(i * m + j));
    cout<<m1+m2;  // it doesn't work
   Thanks all for help, i did it at last...
 
     
     
    