【发布时间】:2018-02-11 18:40:20
【问题描述】:
我想重载 * 运算符有两个目的:
第一个目的:
m4 * 3.5; //m4 is a matrix object
上面对这个函数有效,这里的实现绝对没问题
Matrix operator *(const double n)
但是,当我尝试相反时,即
3.5 * m4;
我收到一条错误消息,提示没有匹配的函数。所以我为这个特殊情况制作了这个函数
Matrix operator *(const double n, Matrix &obj)
{
for(unsigned int i = 0; i < rows; i++ )
{
for(unsigned int j = 0; j < cols; j++)
{
obj[i][j] = obj[i][j] * n;
}
}
return *this;
}
现在,我得到了错误:
错误:'Matrix Matrix::operator*(double, Matrix&)' 必须采用零或一个参数 矩阵运算符 *(const double n, Matrix &obj);
error: no match for ‘operator*’(操作数类型是 ‘double’ 和 ‘矩阵’)
cout
我不知道如何克服操作数的问题!
不幸的是,我不能使用 BLAS、Eigen 等。这项任务要求我们在这个矩阵废话中挣扎。
【问题讨论】:
-
请不要仅仅为了纠正我的语法和大写错误而编辑我的帖子。我来这里是为了编程帮助而不是英语课。这些错误并没有妨碍任何人理解我的代码!
标签: c++ matrix operator-overloading overloading