Click here to Skip to main content
12,761,780 members (36,639 online)
Click here to Skip to main content
Add your own
alternative version


12 bookmarked
Posted 21 Feb 2007

A templated Matrix class using 2d dynamic array declaration & having The most needed Mathematical functions of Matrix & also all the operators needed in standard c++ (without using any vc commands)

, 22 Feb 2007 CPOL
Rate this:
Please Sign up or sign in to vote.
This program is written By Shahin Namini


This Matrix class is a templated class that can be initialized as any kind of numeric types(int, double,float,& etc). it includes Inverse & determinant functions (which are not so easy to write the code) & also all the operators needed for a Matrix class like Multiplying 2 matrix or multiplying a digit to the matrix. it is able to be any size & also it is easy to use.


the uploaded file contains a file which shows how the Matrix can get initialized & how the operators or functions work. Note that parentheses is maybe the most important allows you to get access to the array elements ,as :


Member functions of class Matrix

These are all the member functions & operators of the class :

template<class T>
class Matrix

  1. Matrix(int Row_Size,int Column_Size)
  2. Matrix() >
  3. Matrix(const Matrix<T> &)
  4. ~Matrix(void)
  5. void Set_Element(int Row_,int Column,const T& Value)
  6. T Get_Element(int Row ,int Column) const
  7. bool operator!() const;
  8. const Matrix<T> & operator=(const Matrix<T> &)
  9. const Matrix<T> & operator=(const T&)
  10. bool operator==(const Matrix<T> &) const
  11. bool operator==(const T & ) const
  12. bool operator!=(const Matrix<T> & second) const
  13. bool operator!=(const T & number)
  14. T &operator() (int Row,int Column)
  15. Matrix<T> operator+(const T &)
  16. Matrix<T> operator+(const Matrix<T> &)
  17. const Matrix<T> &operator+=(const T&)
  18. const Matrix<T> & operator+=(const Matrix<T> &)
  19. Matrix<T> operator-(const T&)
  20. Matrix<T> operator - (const Matrix<T> &)
  21. const Matrix<T> & operator -=(const T & )
  22. const Matrix<T> & operator -=(Matrix<T> & )
  23. Matrix<T> operator*(const T&)
  24. Matrix<T> operator* (const Matrix<T> &)
  25. const Matrix<T> & operator*=(const T&)
  26. const Matrix<T> & operator*=(const Matrix<T> &)
  27. void Transposed();>
  28. Matrix<T> GetTransposed() const
  29. bool Inverse();>
  30. Matrix<T> GetInversed() const
  31. double Det() const
  32. void Set_Size(int RowSize,int ColumnSize)
  33. const int& Get_ColumnSize() const
  34. const int & Get_RowSize() const
  • int m_RowSize
  • int m_ColumnSize
  • T**m_Data



note:The returned argument of Inverse (a boolean ) Shows weather the matrix is Invertible & if it is ,inverts the Matrix

note:I have written this code in vc 2005 but it is not a managed code.if you compile it in vc6 you will see some errors that as an instance i is redeclared .thats because vc6 is alittle differant as when you declare i this way :for (int i=0;i<5;i++){ /*statements*/}

i is destroyed after for statement but in vc6 it is a declared variable even after for statement.but it is easy to change it to vc6 by debugging such errors in can do it yourself.

note:the only code i have not written my self is determinant because i have found a great one being written by Paul Bourke .to find the original code go to

Some Technics that are used in Class

to announce one,I have to point to the way the element array (m_Data) is declared using new command:

consider the m_RowSize & m_ColumnSize are given

m_Data=new T* [m_RowSize];

for(int i=0;i<m_RowSize;i++)

m_ColumnSize=new T [m_ColumnSize];



This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

shahin namini
Iran (Islamic Republic of) Iran (Islamic Republic of)
just a Geospatial Information Systems Specialist who loves programming & denotes his life this way.

You may also be interested in...


Comments and Discussions

QuestionI think there is a bug [modified] Pin
sizheng13-Aug-07 20:54
membersizheng13-Aug-07 20:54 
AnswerRe: I think there is a bug Pin
shahin namini18-Aug-07 22:09
membershahin namini18-Aug-07 22:09 
QuestionA problem Pin
cclever10-Apr-07 23:48
membercclever10-Apr-07 23:48 
AnswerRe: A problem Pin
shahin namini12-Apr-07 2:50
membershahin namini12-Apr-07 2:50 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.170217.1 | Last Updated 22 Feb 2007
Article Copyright 2007 by shahin namini
Everything else Copyright © CodeProject, 1999-2017
Layout: fixed | fluid