【发布时间】:2013-12-07 21:31:49
【问题描述】:
我有问题。我已经实现了一个自定义的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:没有操作符“*”匹配这些操作数noperand 类型是:const Matrix * int
我该如何解决?
【问题讨论】:
-
您也可以将这两个运算符写为(非成员)朋友函数
friend Matrix operator(Matrix, int);和friend Matrix operator(int, Matrix);。这使两者保持对称,并且它们彼此相邻声明。
标签: c++ operator-overloading constants