попытался сделать так, но как-то косячно все это
Код:
#pragma once
#include <iostream>
using namespace std;
class matrix
{
private:
double *a;
int n, m;
class Row
{
private:
matrix* _matrix;
int row;
int i, m, j;
public:
double operator[](const int col)
{
if( i<0 || i>=m ) throw "Ошибка";
return _matrix->GetValue(row,col);
}
Row(matrix* _m,int row)
{
_matrix=_m;
this->row=row;
}
};
public:
matrix :: matrix (const matrix &_matrix)
{
cout << "Конструктор копирования " << this << endl;
n=_matrix.n;
m=_matrix.m;
a = _matrix.a ? new double[n*m] : NULL;
if(_matrix.a) memcpy(a,_matrix.a,n*m*sizeof(double));
}
matrix (int = 0,int = 0, double* = NULL);
matrix (const matrix&);
~ matrix ();
bool umnojenie (const matrix& ) const;
bool summa (const matrix& ) const;
// const double* operator[] (int i) const;
Row operator[](int i) const;
matrix& operator = (const matrix&);
matrix& operator +=(const matrix&);
matrix& operator -=(const matrix&);
matrix& operator *=(const matrix&);
matrix& operator *=(const double);
friend matrix operator * (const matrix&, const matrix&);
friend matrix operator * (const matrix&, double);
friend matrix operator * (double , const matrix&);
friend matrix operator + (const matrix&, const matrix&);
friend matrix operator - (const matrix&, const matrix&);
int get_Row () const;
int get_Col () const;
friend ostream& operator << (ostream&, const matrix &);
int GetValue(int row, int col) const;
};