PDA

View Full Version : سوال: کلاس ماتریس به صورت template



alirezabe
چهارشنبه 23 دی 1388, 17:39 عصر
سلام
من کلاس ماتریس را نوشتم ولی حالا که می خواهم آن را به template تبدیل کنم از من خطا می گیرد و جمله ی زیر را می نویسد می شه بگید اشکال کارم کجاست

default template arguments are only allowed on a class template


این هم هدر فایلم

#include <ostream>
#include <istream>

using namespace std;
template <class T=int>
class MATRIX
{
friend MATRIX<T> operator*(T num , MATRIX<T> mat);
friend ostream &operator<<(ostream &out , MATRIX<T> mat);
friend istream &operator>>(istream &in , MATRIX<T> &mat);
private:
int row;
int column;
T **MatrixArray;
public:
MATRIX<T>();
MATRIX<T>(int row_num, int column_num);
MATRIX<T>(MATRIX &mat);
~MATRIX<T>();
void getMatrix();
void setMatrix();
MATRIX<T> operator=(MATRIX<T> mat);
MATRIX<T> operator*(MATRIX<T> mat);
MATRIX<T> operator*(int T);
MATRIX<T> operator+(MATRIX<T> mat);
MATRIX<T> operator-(MATRIX<T> mat);
MATRIX<T> operator++();
MATRIX<T> operator++(int);
T* operator[](int num);
bool operator==(MATRIX<T> mat);


};


و این هم طریفش


#include <iostream>
#include "MATRIX.h"


using namespace std;
template <class T=int>
/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class T=int>
MATRIX<T> ::MATRIX()
{
row=1;
column=1;
MatrixArray = new T *[row];
MatrixArray[0] = new T [column];
MatrixArray[0][0] = 0;
}

/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class T=int>
MATRIX<T> ::MATRIX(int row_num ,int column_num)
{
row = row_num;
column = column_num;
MatrixArray = new T *[row_num];
for (int i=0 ; i<row_num ; i++)
{
MatrixArray[i] = new T [column];
}
for (int j=0 ; j<row ; j++)
{
for (int k=0 ; k<column ; k++)
{
MatrixArray[j][k]=0;
}
}

}
/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class T=int>
MATRIX<T> ::MATRIX(MATRIX<T> &mat)
{
row = mat.row;
column = mat.column;
MatrixArray = new T *[row];
for (int i=0 ; i<row ; i++)
{
MatrixArray[i] = new T [column];
}
for (int j=0 ; j<row ; j++)
{
for (int k=0 ; k<column ; k++)
{
MatrixArray[j][k]=mat.MatrixArray[j][k];
}
}
}

/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class T=int>
void MATRIX<T> ::getMatrix()
{
for (int i=0 ; i<row ; i++)
{
for (int j=0 ; j<column ; j++)
{
cout << MatrixArray[i][j] << "\t" ;
}
cout << endl;
}
return ;
}
/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class T=int>
void MATRIX<T>::setMatrix()
{
cout << "please enter number of the matrix row: " ;
cin >> row ;
cout << "please enter number of the matrix column: " ;
cin >> column;

MatrixArray = new T *[row];
for (int i=0 ; i<row ; i++)
{
MatrixArray[i] = new T [column];
}

cout << "palease enter the dray of matrix: " << endl ;
for (int j=0 ; j<row ; j++)
{
for (int k=0 ; k<column ; k++)
{
cout << "dray["<<j+1<<"]"<<"["<<k+1<<"]=";
cin>> MatrixArray[j][k];
}
}
}
/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class T=int>
MATRIX<T> MATRIX<T>::operator =(MATRIX<T> mat)//MOHEM MOSHKEL DASHTI
{
row = mat.row;
column = mat.column;
MatrixArray = new T *[mat.row];
for (int i=0 ; i<row ; i++)
{
MatrixArray[i]= new T [mat.column];
}
for (int j=0 ; j<row ; j++)
{
for ( int k=0 ; k<column ; k++)
{
MatrixArray[j][k]=mat.MatrixArray[j][k];
}
}
return *this;
}
/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class T=int>
MATRIX<T> MATRIX<T>::operator *(MATRIX<T> mat)
{
MATRIX<T> tempMAT;
if ( column != mat.row)
{
cout << "I can not * these Matrixs! " << endl ;
return tempMAT;
}
cout << endl;
cout << "this is the * of two matrixs:" << endl ;
cout << endl;
tempMAT.row = row;
tempMAT.column = mat.column;
tempMAT.MatrixArray = new T *[row];
for (int i=0 ; i<row ; i++)
{
tempMAT.MatrixArray[i] = new T [mat.column];
}
for ( int ii=0 ; ii<tempMAT.row ; ii++)
{
for ( int jj=0 ; jj<tempMAT.column ; jj++)
{
tempMAT.MatrixArray[ii][jj]=0;
}
}

for (int j=0 ; j<row ; j++)
{
for (int k=0 ; k<mat.column ; k++)
{
for (int l=0 ; l<mat.row ; l++)
{
tempMAT.MatrixArray[j][k] += (MatrixArray[j][l]) * (mat.MatrixArray[l][k]);
}
}
}
return tempMAT;
}
/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class T=int>
MATRIX<T> MATRIX<T>::operator *(T num)
{
MATRIX<T> tempMAT;
tempMAT.row = row;
tempMAT.column = column;
tempMAT.MatrixArray = new T *[row];
for (int ii=0 ; ii<row ; ii++)
{
tempMAT.MatrixArray[ii] = new T [column];
}

for (int i=0 ; i<row ; i++)
{
for (int j=0 ; j<column ; j++)
{
tempMAT.MatrixArray[i][j] = MatrixArray[i][j] * num;
}
}
return tempMAT ;
}
/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class T=int>
MATRIX<T> operator *(T num , MATRIX<T> mat) // MOHEM ESHKAL DASHTI DAR TARIF HEADER TABE
{
for (int i=0 ; i<mat.row ; i++)
{
for (int j=0 ; j<mat.column ; j++)
{
mat.MatrixArray[i][j] = (mat.MatrixArray[i][j]*num) ;
}
}
return mat ;
}
/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class T=int>
MATRIX<T> MATRIX<T>::operator +(const MATRIX<T> mat)
{
MATRIX<T> tempMAT;
if ( row != mat.row && column != mat.column)
{
cout << "I can not + these Matrixs!" << endl ;
return tempMAT;
}
tempMAT.row = row;
tempMAT.column = column;
tempMAT.MatrixArray = new T *[row];
for (int i=0 ; i<row ; i++)
{
tempMAT.MatrixArray[i] = new T [column];
}
for (int i=0 ; i<row ; i++)
{
for (int j=0 ; j<column ; j++)
{
tempMAT.MatrixArray[i][j] = MatrixArray[i][j] + mat.MatrixArray[i][j];
}
}
return tempMAT;
}
/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class T=int>
MATRIX<T> MATRIX<T>::operator -(const MATRIX<T> mat)
{
MATRIX<T> tempMAT;
if ( row != mat.row && column != mat.column)
{
cout << "I can not - these Matrixs!" << endl ;
return tempMAT;
}
tempMAT.row = row;
tempMAT.column = column;
tempMAT.MatrixArray = new T *[row];
for (int i=0 ; i<row ; i++)
{
tempMAT.MatrixArray[i] = new T [column];
}
for (int i=0 ; i<row ; i++)
{
for (int j=0 ; j<column ; j++)
{
tempMAT.MatrixArray[i][j] = MatrixArray[i][j] - mat.MatrixArray[i][j];
}
}
return tempMAT;
}
/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class T=int>
T* MATRIX<T> ::operator [](int num)//MAFHOOMASH DOROST JA NAYOFTAF
{
return MatrixArray[num];
}
/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class T=int>
MATRIX<T> MATRIX<T> ::operator ++()
{
for (int i=0 ; i<row ; i++)
{
for (int j=0 ; j<column ; j++)
{
MatrixArray[i][j] = MatrixArray[i][j] + 1 ;
}
}
return *this ;
}
/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class T=int>
MATRIX<T> MATRIX<T> ::operator ++(int)
{
MATRIX<T> tempMAT;
tempMAT.row = row;
tempMAT.column = column;
tempMAT.MatrixArray = new T *[row];
for (int i=0 ; i<row ; i++)
{
tempMAT.MatrixArray[i] = new T [column];
}

tempMAT=*this;

for (int i=0 ; i<row ; i++)
{
for (int j=0 ; j<column ; j++)
{
MatrixArray[i][j] = MatrixArray[i][j] + 1 ;
}
}
return tempMAT;
}
/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class T=int>
ostream &operator<< (ostream &out , MATRIX<T> mat)
{
for (int i=0 ; i<mat.row ; i++)
{
for (int j=0 ; j<mat.column ; j++)
{
out << mat.MatrixArray[i][j] << "\t" ;
}
out << endl;
}
return out;
}
/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class T=int>
istream &operator>>(istream &in , MATRIX<T> &mat)// MOHEM AGAR & DOVOM GOZASHTE NASHAVAD HICH CHIZI ENGGAR DAR MATRIX GHARAR NAGEREFTE
{
cout << "please enter number of the matrix row: " ;
cin >> mat.row ;
cout << "please enter number of the matrix column: " ;
cin >> mat.column;

mat.MatrixArray = new T *[mat.row];
for (int i=0 ; i<mat.row ; i++)
{
mat.MatrixArray[i] = new T [mat.column];
}

cout << "palease enter the dray of matrix: " << endl ;
for (int j=0 ; j<mat.row ; j++)
{
for (int k=0 ; k<mat.column ; k++)
{
cout << "dray["<<j+1<<"]"<<"["<<k+1<<"]=";
in>> mat.MatrixArray[j][k];
}
}
return in;
}
/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class T=int>
bool MATRIX<T> ::operator ==(MATRIX<T> mat)//MOHEM MIKHASTI BAR AX BERI YANI DAR IF FOR MINEVESHTI
{
if (row == mat.row && column == mat.column)
{
for (int i=0 ; i<row ; i++)
{
for (int j=0 ; j<column ; j++)
{
if (MatrixArray[i][j] != mat.MatrixArray[i][j])
{
return 0;
}

}
}
return 1;
}
else
return 0;
}
/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class T=int>
MATRIX<T> ::~MATRIX()
{
//MatrixArray = delete * [row];
//for(int i=0 ; i<row ; i++ )
//{
// MatrixArray[i] = delete [column]
//}
cout << "your matrix delete" << endl;
}
/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/

با تشکر
علیرضا

Salar Ashgi
چهارشنبه 23 دی 1388, 22:28 عصر
دلیل تون از نوشتن کد زیر چیه ؟



template <class T=int>


ساختار درستی نیست ، باید کلمه int برداشته بشه .

alirezabe
چهارشنبه 23 دی 1388, 23:15 عصر
برداشتم ولی حالا موقع تعریف یک ماتریس در main این دو خطا را می دهد

error LNK2019: unresolved external symbol "public: __thiscall MATRIX<int>::MATRIX<int>(int,int)" (??0?$MATRIX@H@@QAE@HH@Z) referenced in function _main

fatal error LNK1120: 1 unresolved externals

ممنون می شم راهنماییم کنید

Salar Ashgi
چهارشنبه 23 دی 1388, 23:55 عصر
برداشتم ولی حالا موقع تعریف یک ماتریس در main این دو خطا را می دهد

error LNK2019: unresolved external symbol "public: __thiscall MATRIX<int>::MATRIX<int>(int,int)" (??0?$MATRIX@H@@QAE@HH@Z) referenced in function _main

fatal error LNK1120: 1 unresolved externals

ممنون می شم راهنماییم کنید

تو داخل تابع Main چگونه از کلاس آبجکت ساخته اید ؟ کد خود را قرار دهید .

alirezabe
پنج شنبه 24 دی 1388, 05:46 صبح
MATRIX <int> M1(2,2);

alirezabe
پنج شنبه 24 دی 1388, 06:52 صبح
کلا اگر بخواهم از هر کدام از توابع کلاسم استفاده کنم همین خطا را می گیرد

alirezabe
پنج شنبه 24 دی 1388, 07:50 صبح
الان کد های من به صورت زیر است ولی از هر تابع کلاس که استفاده می کنم همان دو پیغام بالا را می دهد

هدر فایل


#include <ostream>
#include <istream>

using namespace std;

template < class A>
class MATRIX
{
friend MATRIX operator*(A num , MATRIX mat);
friend ostream &operator<<(ostream &out , MATRIX mat);
friend istream &operator>>(istream &in , MATRIX &mat);
private:
int row;
int column;
A **MatrixArray;
public:
MATRIX();
MATRIX(int row_num, int column_num);
MATRIX(MATRIX &mat);
~MATRIX();
void getMatrix();
void setMatrix();
MATRIX operator=(MATRIX mat);
MATRIX operator*(MATRIX mat);
MATRIX operator*(A num);
MATRIX operator+(MATRIX mat);
MATRIX operator-(MATRIX mat);
MATRIX operator++();
MATRIX operator++(int);
A* operator[](int num);
bool operator==(MATRIX mat);


};

تعریف کلاس


#include <iostream>
#include "MATRIX.h"


using namespace std;

/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class A>
MATRIX<A> ::MATRIX()
{
row=1;
column=1;
MatrixArray = new A *[row];
MatrixArray[0] = new A [column];
MatrixArray[0][0] = 0;
}

/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class A>
MATRIX<A> ::MATRIX(int row_num ,int column_num)
{
row = row_num;
column = column_num;
MatrixArray = new A *[row_num];
for (int i=0 ; i<row_num ; i++)
{
MatrixArray[i] = new A [column];
}
for (int j=0 ; j<row ; j++)
{
for (int k=0 ; k<column ; k++)
{
MatrixArray[j][k]=0;
}
}

}
/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class A>
MATRIX<A> ::MATRIX(MATRIX<A> &mat)
{
row = mat.row;
column = mat.column;
MatrixArray = new A *[row];
for (int i=0 ; i<row ; i++)
{
MatrixArray[i] = new A [column];
}
for (int j=0 ; j<row ; j++)
{
for (int k=0 ; k<column ; k++)
{
MatrixArray[j][k]=mat.MatrixArray[j][k];
}
}
}

/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class A>
void MATRIX<A> ::getMatrix()
{
for (int i=0 ; i<row ; i++)
{
for (int j=0 ; j<column ; j++)
{
cout << MatrixArray[i][j] << "\t" ;
}
cout << endl;
}
return ;
}
/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class A>
void MATRIX<A>::setMatrix()
{
cout << "please enter number of the matrix row: " ;
cin >> row ;
cout << "please enter number of the matrix column: " ;
cin >> column;

MatrixArray = new A *[row];
for (int i=0 ; i<row ; i++)
{
MatrixArray[i] = new A [column];
}

cout << "palease enter the dray of matrix: " << endl ;
for (int j=0 ; j<row ; j++)
{
for (int k=0 ; k<column ; k++)
{
cout << "dray["<<j+1<<"]"<<"["<<k+1<<"]=";
cin>> MatrixArray[j][k];
}
}
}
/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class A>
MATRIX<A> MATRIX<A>::operator =(MATRIX<A> mat)//MOHEM MOSHKEL DASHTI
{
row = mat.row;
column = mat.column;
MatrixArray = new A *[mat.row];
for (int i=0 ; i<row ; i++)
{
MatrixArray[i]= new A [mat.column];
}
for (int j=0 ; j<row ; j++)
{
for ( int k=0 ; k<column ; k++)
{
MatrixArray[j][k]=mat.MatrixArray[j][k];
}
}
return *this;
}
/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class A>
MATRIX<A> MATRIX<A>::operator *(MATRIX<A> mat)
{
MATRIX<A> tempMAT;
if ( column != mat.row)
{
cout << "I can not * these Matrixs! " << endl ;
return tempMAT;
}
cout << endl;
cout << "this is the * of two matrixs:" << endl ;
cout << endl;
tempMAT.row = row;
tempMAT.column = mat.column;
tempMAT.MatrixArray = new A *[row];
for (int i=0 ; i<row ; i++)
{
tempMAT.MatrixArray[i] = new A [mat.column];
}
for ( int ii=0 ; ii<tempMAT.row ; ii++)
{
for ( int jj=0 ; jj<tempMAT.column ; jj++)
{
tempMAT.MatrixArray[ii][jj]=0;
}
}

for (int j=0 ; j<row ; j++)
{
for (int k=0 ; k<mat.column ; k++)
{
for (int l=0 ; l<mat.row ; l++)
{
tempMAT.MatrixArray[j][k] += (MatrixArray[j][l]) * (mat.MatrixArray[l][k]);
}
}
}
return tempMAT;
}
/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class A>
MATRIX<A> MATRIX<A>::operator *(A num)
{
MATRIX<A> tempMAT;
tempMAT.row = row;
tempMAT.column = column;
tempMAT.MatrixArray = new A *[row];
for (int ii=0 ; ii<row ; ii++)
{
tempMAT.MatrixArray[ii] = new A [column];
}

for (int i=0 ; i<row ; i++)
{
for (int j=0 ; j<column ; j++)
{
tempMAT.MatrixArray[i][j] = MatrixArray[i][j] * num;
}
}
return tempMAT ;
}
/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class A>
MATRIX<A> operator *(A num , MATRIX<A> mat) // MOHEM ESHKAL DASHTI DAR TARIF HEADER TABE
{
for (int i=0 ; i<mat.row ; i++)
{
for (int j=0 ; j<mat.column ; j++)
{
mat.MatrixArray[i][j] = (mat.MatrixArray[i][j]*num) ;
}
}
return mat ;
}
/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class A>
MATRIX<A> MATRIX<A>::operator +(const MATRIX<A> mat)
{
MATRIX<A> tempMAT;
if ( row != mat.row && column != mat.column)
{
cout << "I can not + these Matrixs!" << endl ;
return tempMAT;
}
tempMAT.row = row;
tempMAT.column = column;
tempMAT.MatrixArray = new int *[row];
for (int i=0 ; i<row ; i++)
{
tempMAT.MatrixArray[i] = new int [column];
}
for (int i=0 ; i<row ; i++)
{
for (int j=0 ; j<column ; j++)
{
tempMAT.MatrixArray[i][j] = MatrixArray[i][j] + mat.MatrixArray[i][j];
}
}
return tempMAT;
}
/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class A>
MATRIX<A> MATRIX<A>::operator -(const MATRIX<A> mat)
{
MATRIX<A> tempMAT;
if ( row != mat.row && column != mat.column)
{
cout << "I can not - these Matrixs!" << endl ;
return tempMAT;
}
tempMAT.row = row;
tempMAT.column = column;
tempMAT.MatrixArray = new int *[row];
for (int i=0 ; i<row ; i++)
{
tempMAT.MatrixArray[i] = new int [column];
}
for (int i=0 ; i<row ; i++)
{
for (int j=0 ; j<column ; j++)
{
tempMAT.MatrixArray[i][j] = MatrixArray[i][j] - mat.MatrixArray[i][j];
}
}
return tempMAT;
}
/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class A>
A* MATRIX<A> ::operator [](int num)//MAFHOOMASH DOROST JA NAYOFTAF
{
return MatrixArray[num];
}
/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class A>
MATRIX<A> MATRIX<A> ::operator ++()
{
for (int i=0 ; i<row ; i++)
{
for (int j=0 ; j<column ; j++)
{
MatrixArray[i][j] = MatrixArray[i][j] + 1 ;
}
}
return *this ;
}
/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class A>
MATRIX<A> MATRIX<A> ::operator ++(int)
{
MATRIX<A> tempMAT;
tempMAT.row = row;
tempMAT.column = column;
tempMAT.MatrixArray = new A *[row];
for (int i=0 ; i<row ; i++)
{
tempMAT.MatrixArray[i] = new A [column];
}

tempMAT=*this;

for (int i=0 ; i<row ; i++)
{
for (int j=0 ; j<column ; j++)
{
MatrixArray[i][j] = MatrixArray[i][j] + 1 ;
}
}
return tempMAT;
}
/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class A>
ostream &operator<< (ostream &out , MATRIX<A> mat)
{
for (int i=0 ; i<mat.row ; i++)
{
for (int j=0 ; j<mat.column ; j++)
{
out << mat.MatrixArray[i][j] << "\t" ;
}
out << endl;
}
return out;
}
/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class A>
istream &operator>>(istream &in , MATRIX<A> &mat)// MOHEM AGAR & DOVOM GOZASHTE NASHAVAD HICH CHIZI ENGGAR DAR MATRIX GHARAR NAGEREFTE
{
cout << "please enter number of the matrix row: " ;
cin >> mat.row ;
cout << "please enter number of the matrix column: " ;
cin >> mat.column;

mat.MatrixArray = new int *[mat.row];
for (int i=0 ; i<mat.row ; i++)
{
mat.MatrixArray[i] = new int [mat.column];
}

cout << "palease enter the dray of matrix: " << endl ;
for (int j=0 ; j<mat.row ; j++)
{
for (int k=0 ; k<mat.column ; k++)
{
cout << "dray["<<j+1<<"]"<<"["<<k+1<<"]=";
in>> mat.MatrixArray[j][k];
}
}
return in;
}
/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class A>
bool MATRIX<A> ::operator ==(MATRIX<A> mat)//MOHEM MIKHASTI BAR AX BERI YANI DAR IF FOR MINEVESHTI
{
if (row == mat.row && column == mat.column)
{
for (int i=0 ; i<row ; i++)
{
for (int j=0 ; j<column ; j++)
{
if (MatrixArray[i][j] != mat.MatrixArray[i][j])
{
return 0;
}

}
}
return 1;
}
else
return 0;
}
/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/
template <class A>
MATRIX<A> ::~MATRIX()
{
//MatrixArray = delete * [row];
//for(int i=0 ; i<row ; i++ )
//{
// MatrixArray[i] = delete [column]
//}
cout << "your matrix delete" << endl;
}
/*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*# *#*#*#*#*#*#*#*#*#*#*/