C++ C++;运算符重载顺序
可能重复:C++ C++;运算符重载顺序,c++,operator-keyword,overriding,C++,Operator Keyword,Overriding,可能重复: 我覆盖*运算符,如下所示: Point Point::operator *(float scale){ Point point(this->x*scale, this->y*scale); return point; } 如何解决此问题: Point p1 (5.0, 10.0); Point p2 = p1*4; //works fine Point p3 = 4*p1 //error: no match for 'operator*' 编写一
我覆盖*运算符,如下所示:
Point Point::operator *(float scale){
Point point(this->x*scale, this->y*scale);
return point;
}
如何解决此问题:
Point p1 (5.0, 10.0);
Point p2 = p1*4; //works fine
Point p3 = 4*p1 //error: no match for 'operator*'
编写一个自由函数,如下所示:
Point operator *(float scale, Point p)
{
return p * scale;
}
您可以将操作符重载为自由函数,并提供它的两个版本,而不是将其重载为成员函数
Point operator *(float scale, Point p);
Point operator *(Point p, float scale);
有了这些:
第1版支持:
Point p3 = 4*p1;
第二个版本支持:
Point p2 = p1*4;
我有一个重复的问题,你回答了我同样的问题:看我(几乎完全相同)的问题: