2017-01-30 2 views
1

나는 두 클래스 SM을 가지고 있습니다. 피연산자 유형은 이러한 피연산자 일치 - "="Ostream << 및 연산자 - = 클래스?

없이 운영자 : 표준 : : ostream에를 - =

class S 
{ 
public: 
    S& operator-=(M& m) 
    { 
     //my code 
     return *this; 
    } 
} 
내가

cout << s3 -= m2; 

를 사용하려고하면 나는 물리게 오류가 발생하는

ostream을 포함하여 3 개의 매개 변수로 시도했지만 -=은 2 개만 있습니다. 어떻게 해결할 수 있습니까?

답변

4

operator precedence과 관련이있다. <<이 높은 그렇게

cout<<s3-=m2; 

(cout << s3) -= m2; 

로 처리됩니다 -=보다 우선하고있다하지

cout << (s3 -= m2); 

당신은 당신이 원하는 것을 얻기 위해 위의 양식을 사용해야합니다.

+0

나는 던지기가없는 방법이있을 것이라고 생각했습니다. 고마워요! – Aria

0

이 문제를 해결할 방법이 없습니다. c++의 운영자 우선 순위 규칙은 고정되어 있으며 과부하가 걸리지 않습니다.

유일한 해결책은 사용 코드를 변경하는 것입니다. 예를 들어,

cout << (s3 -= m2); 

으로 작성하면 원래 코드가 작동합니다. 또 다른 옵션은 두 라인을 분할한다 :

s3 -= m2; 
cout << s3; 
관련 문제