class Matrix { public: Matrix(float m11=0, float m12=0, float m21=0, float m22=0); Matrix(const Matrix &m); virtual ~Matrix() {delete[] d;}; Matrix operator+(const Matrix &m) const; Matrix& operator=(const Matrix &m); float &c(int i, int j) const {return d[2*(i-1)+(j-1)];}; private: float *d; }; class DiagonalMatrix : public Matrix { public: DiagonalMatrix() {}; DiagonalMatrix(float d1, float d2) {c(1,1) = d1; c(2,2) = d2;}; }; Matrix::Matrix(float m11, float m12, float m21, float m22) { d = new float[2*2]; c(1,1)=m11; c(1,2)=m12; c(2,1)=m21; c(2,2)=m22; } Matrix::Matrix(const Matrix &m) { d = new float[2*2]; for (int i=0 ; i<2 ; i++) for (int j=0 ; j<2 ; j++) c(i,j) = m.c(i, j); } Matrix Matrix::operator+(const Matrix &q) const { Matrix r; for (int i=1 ; i<=2 ; i++) for (int j=1 ; j<=2 ; j++) r.c(i,j) = c(i,j) += q.c(i,j); return r; } Matrix& Matrix::operator=(const Matrix &q) { for (int i=1 ; i<=2 ; i++) for (int j=1 ; j<=2 ; j++) c(i,j) = q.c(i,j); return *this; }
Matrix Matrix::CreateDiagonalMatrix
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)