我有问题。我已将自定义operator*
实现为成员函数。
在标题中:
class Matrix
{
public:
Matrix operator*(int arg); //(1)
...
}
Matrix operator*(int a, const Matrix& m)
{
return m * a; //(2)
}
(1)我可以在main.cpp中执行此操作:
Matrix a = Matrix::GetRandom.....
Matrix b = a * 2;
(2)在这一行上,我遇到了编译错误:
IntelliSense:没有运算符“*”匹配这些operandsnope和类型是:const Matrix * int
我该如何解决?
答案 0 :(得分:3)
m
为const
,因此只能调用const
方法。使Matrix::operator*
成为const
成员函数:
Matrix operator*(int arg) const;
答案 1 :(得分:1)
您在运算符重载声明中错过了const
:
Matrix operator*(int arg) const;