我有个问题。我已经实现了一个自定义的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:没有运算符"*"与这些操作符匹配。无运算符类型为:const Matrix*int
我该如何修复它?
m
是const
,因此只能调用const
方法。使Matrix::operator*
成为const
成员函数:
Matrix operator*(int arg) const;
您在运算符重载声明中缺少一个const
:
Matrix operator*(int arg) const;