我创建了一个类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在本地编译。你能创建一个简单的可重复样本吗? –