我有一个Mat类
template <class A_Type,int sizeA,int sizeB>
class Matrix {
..
..
..
Matrix operator*(int elem){
Matrix res = *this;
res.multiWith(elem);
return res;
}
};
现在我需要它来使用Mat * 2和2 * Mat
我的语法错误...
无法在网上找到任何示例......任何想法如何写出来?
答案 0 :(得分:3)
现在我需要它来使用Mat * 2和2 * Mat
您编写了一个全局运算符重载:
template<class A_Type,int sizeA,int sizeB>
Matrix<A_Type,sizeA,sizeB> operator*(int,const Matrix<A_Type,sizeA,sizeB>&);
template<class A_Type,int sizeA,int sizeB>
Matrix<A_Type,sizeA,sizeB> operator*(const Matrix<A_Type,sizeA,sizeB>&,int);
类似的东西:
template <class A_Type,int sizeA,int sizeB>
class Matrix {
template<class U_Type,int sizeX,int sizeX>
friend Matrix<U_Type,sizeX,sizeY> operator*(int elem,const Matrix<U_Type,sizeX,sizeY>& m) {
Matrix<U_Type,sizeX,sizeY> res = m;
res.multiWith(elem);
return res;
}
template<class U_Type,int sizeX,int sizeX>
friend Matrix<U_Type,sizeX,sizeY> operator*(const Matrix<U_Type,sizeX,sizeY>& m, int elem) {
return operator*(elem,m);
}
};