我有一个问题。我已将自定义 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: no operator "*" matches these operandsnoperand types are: const Matrix * int
我该如何解决?
最佳答案
m
是const
,所以只能调用const
方法。使 Matrix::operator*
成为 const
成员函数:
Matrix operator*(int arg) const;
关于c++运算符重载看不到其他运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20446926/