2011-11-13 4 views
1

가능한 중복 :
Operator Overloading in C++ as int + objC++ 연산자 오버로딩 위해

나는 다음과 같이 * 연산자를 오버라이드 (override) :

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 : // 유래 .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; 

, 2 차 버전은 지원합니다 :

첫번째 버전은 지원 제 (거의 동일) 질문에

Point p2 = p1*4; 
+0

나는 중복 된 질문을했고 당신은 나의 것과 똑같은 대답을했다 : P – Blender

관련 문제