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; 

我有一个重复的问题,你回答了我同样的问题:看我(几乎完全相同)的问题: