Начал писать библиотеку для работы с матрицами, хочу сделать
ее объектно ориентированой, но сталкнулся с одной проблемой...
есть такой класс матрицы:
matrix.h:
typedef double ELEMENT_TYPE;
class matrix
{
public:
int col,row; // col - количество строк
// row - количество столбцов
ELEMENT_TYPE *data; // сдесь хранятся элементы матрицы
~matrix();
matrix(int r,int c);
void init(ELEMENT_TYPE a); // инициализация матрицы
matrix operator+(matrix m); // сумма 2-х матриц
matrix operator-(matrix m); // разность 2-х матриц
ELEMENT_TYPE operator()(int r,int c); // проблема в этих
void operator=(ELEMENT_TYPE a); // 2-х функциях
};
matrix.cpp:
#include "matrix.h"
//////////////////////////////////////////////////////////////////////////
void matrix::init(ELEMENT_TYPE a)
{
int i,j;
for (i=0;i<row;i++)
for (j=0;j<col;j++)
{
data[i*row+j] = a;
}
};
//////////////////////////////////////////////////////////////////////////
matrix::matrix(int r,int c)
{
col = c;
row = r;
data = new ELEMENT_TYPE[col*row];
};
//////////////////////////////////////////////////////////////////////////
matrix::~matrix()
{
delete [] data;
};
//////////////////////////////////////////////////////////////////////////
matrix matrix::operator +(matrix m)
{ int i,j;
matrix temp(row,col);
for (i=0;i<row;i++)
for (j=0;j<row;j++)
{
temp.data[i*row+j] = data[i*row+j] + m.data[i*row+j];
}
return temp;
};
//////////////////////////////////////////////////////////////////////////
matrix matrix::operator -(matrix m)
{ int i,j;
matrix temp(row,col);
for (i=0;i<row;i++)
for (j=0;j<row;j++)
{
temp.data[i*row+j] = data[i*row+j] - m.data[i*row+j];
}
return temp;
};
//////////////////////////////////////////////////////////////////////////
ELEMENT_TYPE matrix::operator()(int r,int c)
{
return data[(r-1)*row+(c-1)];
};
//////////////////////////////////////////////////////////////////////////
void matrix::operator=(ELEMENT_TYPE a)
{
}
Собственно вопрос такой: как мне перегрузить операции () и =
чтобы в тексте программы была возможна такая запись:
...
int i,j,k;
matrix a(n,n);
...
a(j,k) = a(j,k)-a(j,i)*a(i,k);
...
Чесно говоря совершенно не представляю как это сделать
Заранее спасибо.