Ostream<<和运算符 - =类?

时间:2017-01-30 13:26:56

标签: c++ operator-overloading

我有2个课程SM。当我尝试使用

cout << s3 -= m2;

我收到一个错误:

  

没有运算符“ - =”匹配这些操作数操作数类型是:std :: ostream - =

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

我尝试了3个参数,包括ostream,但-=只有2个。 我该如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

这与operator precedence有关。 <<的优先级高于-=所以

cout<<s3-=m2;

被视为

(cout << s3) -= m2;

而不是

cout << (s3 -= m2);

您需要使用上面的表格来获得您想要的内容。

答案 1 :(得分:0)

你无法解决这个问题。 <{1}}中的运算符优先级规则是固定的,不能重载。

唯一可行的解​​决方案是更改使用代码。例如,如果你写

c++

然后您的原始代码应该有效。另一种选择是将线分成两部分:

cout << (s3 -= m2);