c ++运算符重载没有看到其他运算符

时间:2013-12-07 21:31:50

标签: c++ operator-overloading const

我有问题。我已将自定义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

我该如何解决?

2 个答案:

答案 0 :(得分:3)

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

Matrix operator*(int arg) const;

答案 1 :(得分:1)

您在运算符重载声明中错过了const

Matrix operator*(int arg) const;