c++运算符重载,看不到其他运算符



我有个问题。我已经实现了一个自定义的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

我该如何修复它?

mconst,因此只能调用const方法。使Matrix::operator*成为const成员函数:

Matrix operator*(int arg) const;

您在运算符重载声明中缺少一个const

Matrix operator*(int arg) const;

相关内容

最新更新