1
我试图在我的Matrix类中为*运算符重载。将类实例重载为右边的操作符
我有一个,使其如果是矩阵*的东西,(INT,双...)
我在寻找一个使之成为对面即东西*矩阵
这就是我想
template<class T>
bool operator*(Matrix<T>& other){
Matrix<T> mat(other.rows,other.columns);
for(int i=0;i<other.rows;i++){
for(int j=0;j<other.columns;j++){
T temp=other.get(i,j);
temp=temp*(this);
mat.set(i,j,temp);
}
}
return mat;
}
,这是矩阵*的东西是什么在起作用
Matrix<T>& operator*(const T & num){
Matrix<T> mat(rows,columns);
for(int i=0;i<rows;i++){
for(int j=0;j<columns;j++){
T temp=(matrix[i][j]);
temp=temp*num;
mat.set(i,j,temp);
}
}
return mat;
}
我试过这个,我得到了一些编译错误 main.cpp:71:5:错误:'operator *'不匹配(操作数类型是'int'和'Matrix') m = 3 * m; ^ main.cpp中:71:5:注:候选是:3:: 在文件从main.cpp中包括0: Matrix.hpp:229:12:注意:模板矩阵&运算符*(常量T& ,常量矩阵&) 矩阵&运算符*(常量T&NUM,常量矩阵&MATR){ ^ Matrix.hpp:229:12:注意:模板参数推导/置换失败: main.cpp中:71: 6:注意:参数'T'('int'和'Rational')的推导冲突类型 m = 3 * m; ^ –
keiloda
@keiloda它有点不言自明 - “3”是“int”而不是“Rational”,因此类型不匹配。 –
@keiloda请参阅我的更新以了解解决方法 –