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請參閱我的更新以瞭解解決方法 –