/* File: matrix.H Copyright glh 10/21/92 */ #ifndef MATRIXH #define MATRIXH #include #include #include #include typedef enum {false, true} Boolean; template class Matrix { private: int row_dim, col_dim; T** element; public: inline Matrix(); // default constructor Matrix(const Matrix&); // copy constructor Matrix(int rdim, int cdim); // constructor Matrix(int rdim, int cdim, const T& initval); // constructor Matrix(int rdim, int cdim, T* initval); // constructor ~Matrix(); // destructor inline int Row() const; inline int Col() const; inline T Retrieve(int row, int col) const; inline void Assign(int row, int col, const T& val); Matrix& operator=(const Matrix&); friend ostream& operator<<(ostream& os, const Matrix&); friend Matrix& operator+(const Matrix&, const Matrix&); friend Matrix& operator-(const Matrix&, const Matrix&); friend Matrix& operator-(const Matrix&); friend Matrix& operator*(const Matrix&, const Matrix&); friend Matrix& operator*(const T& scalar, const Matrix&); friend Matrix& Transpose(const Matrix&); // remaining member functions not shown }; template inline Matrix::Matrix() {row_dim=col_dim=0; element=NULL;} template inline int Matrix::Row() const {return row_dim;} template inline int Matrix::Col() const {return col_dim;} template inline T Matrix::Retrieve(int row, int col) const {return element[row][col];} template inline void Matrix::Assign(int row, int col, const T& val) {element[row][col] = val;} #endif