2011-11-13 25 views
1

可能性の重複:
Operator Overloading in C++ as int + objC++演算子のオーバーロード順

は、私は次のように*演算子をオーバーライドします。

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*' 
+0

見ます。http:// stackoverflowの.com/questions/7651954/overloading-operator-order – Blender

答えて

4

はこのように、自由に機能を書く:

Point operator *(float scale, Point p) 
{ 
    return p * scale; 
} 
2

あなたがフリー機能として演算子をオーバーロードし、代わりにメンバ関数としてそれをオーバーロードすることの両方のバージョンを提供しています。これらにより

Point operator *(float scale, Point p); 
Point operator *(Point p, float scale); 

Point p3 = 4*p1; 

と第二のバージョンはサポートされています:

第一のバージョンはサポートしています私の(実質的に同一)質問で

Point p2 = p1*4; 
+0

私は重複した質問をしていました。 – Blender

関連する問題