我創建了一個類Matrix
基本上代表了數學矩陣。爲了使用一個標量矩陣乘法,我已經超負荷了*
操作爲:重載*運算符對雙方的工作權利和左
Matrix Matrix::operator*(double scalar) const
{
Matrix result(*this);
result *= scalar;
return result;
}
爲了使從離開了操作員的工作量,以及,我已經使用:
Matrix operator*(double a, const Matrix &M)
{
return M * a;
}
鑑於Matrix M
和double s
,M * s
工作正常,但s * M
給我一個錯誤:
Error C2677: binary
*
: no global operator found which takes typeMatrix
(or there is no acceptable conversion)
而IDE向我顯示錯誤:「沒有運算符*
匹配這些操作數」。
任何想法可能是什麼問題呢?
編輯:這是一個愚蠢的錯誤!我沒有在頭文件中聲明操作符,編譯器也看不到聲明!因此,對於抱歉......
和完整的示例代碼。你沒有爲第一個運算符定義定義返回類型嗎? – Sebastian
@塞巴斯蒂安,那是一個錯字,我糾正了它。 我得到這個錯誤在我的代碼,我有mIIdevCon = mIIcon - one3 * mIIvol其中mIIdevCon,mIIcon,mIIvol是Matrix對象和one3是 「常量雙矩陣:: one3 = 1.0/3.0;」 – Alborz
不能到達ideone來舉個例子,但是你的代碼只能用一個簡單的double * Matrix在本地編譯。你能創建一個簡單的可重複樣本嗎? –