读书人

关于模板跟等号运算符重载

发布时间: 2013-04-21 21:18:07 作者: rapoo

关于模板和等号运算符重载
一个模板要写一个作为成员函数的=号运算符重载该怎么写? 要格式!求大神!
该类是这么定义的,你们懂得。。。。
class CMatrix
{
T * * Mat;
int nRow;
int nCol;
public:
CMatrix<T>();
CMatrix(int row,int col,int k);
CMatrix(int row,int col);
~CMatrix(){delete Mat;}
void Show();
void InputFromFile_int();
void InputFromFile_double();
friend CMatrix<T>&operator * (CMatrix<T>&mat1, CMatrix<T>&mat2);
CMatrix<T>operator = (CMatrix<T> &mat2);


};红色部分
[解决办法]
就这样写也行.
不过更规范点的话, 返回的应该是个引用, 参数要加 const.
<T> 可要可不要.

CMatrix& operator = (const CMatrix &mat2);


[解决办法]


template <typename T>
class CMatrix
{
T * * Mat;
int nRow;
int nCol;
public:
CMatrix(){};
CMatrix(int row,int col,int k);
CMatrix(int row,int col);
~CMatrix(){delete Mat;}
void Show();
void InputFromFile_int();
void InputFromFile_double();
friend CMatrix<T>&operator * (CMatrix<T>&mat1, CMatrix<T>&mat2);
CMatrix& operator = (const CMatrix &mat2);
};

template<class T>
CMatrix<T>& CMatrix<T>::operator= (const CMatrix<T> &mat)
{
for(int i=0;i<mat.nRow;i++)
for(int j=0;j<mat.nCol;j++)
Mat[nRow][nCol]=mat.Mat[nRow][nCol];

return *this;
}

读书人网 >C++

热点推荐