编写一个矩阵模版的问题
template<class T>
class Matrix
{
public:
Matrix(int row,int column)
{
m_Row=row;
m_Column=column;
m_Head=new T[row*column];
}
T GetValue(int row,int column)
{
return m_Head[row*m_Column+column];
}
void Set(int row,int column,T value)
{
m_Head[row*m_Column+column]=value;
}
Matrix(const Matrix<T> &matrix)
{
m_Row=matrix.m_Row;
m_Column=matrix.m_Column;
m_Head=new T[m_Row*m_Column];
for(int i=0;i<m_Row*m_Column;i++)
m_Head[i]=matrix.m_Head[i];
}
int GetRow() const
{
return m_Row;
}
int GetColumn() const
{
return m_Column;
}
friend const Matrix<T> operator+(const Matrix<T> &matrix1,const Matrix<T> &matrix2);
virtual ~Matrix()
{
delete []m_Head;
}
private:
T *m_Head;
int m_Column;
int m_Row;
};
template<class T>
const Matrix<T> operator+(const Matrix<T> &matrix1,const Matrix<T> &matrix2)
{
if( matrix2.GetRow() == matrix1.GetRow() && matrix2.GetColumn() == matrix1.GetColumn())
{
Matrix<T> matrix(matrix1.GetRow(),matrix1.GetColumn());
for(int i; i<matrix2.GetRow(); i++)
{
for(int j=0; j<matrix2.GetColumn(); j++)
{
//int column=
T sum=matrix1.GetValue(i,j)+matrix2.GetValue(i,j);
matrix.Set(i,j,sum);
}
}
return matrix;
}
}
当我用到operator+ 的时候,编译不通过,怎么回事