Ostream <<和运算符 -= 用于类?

Ostream << and operator -= for classes?

本文关键字:lt 用于 运算符 Ostream      更新时间:2023-10-16

我有 2 个类SM .当我尝试使用

cout << s3 -= m2;

我收到一个满足的错误:

没有运算符 "-=" 匹配这些操作数 操作数类型为: std::ostream -=

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

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

这与运算符优先级有关。 <<的优先级高于-=

cout<<s3-=m2;

被视为

(cout << s3) -= m2;

而不是

cout << (s3 -= m2);

您需要使用上面的表格才能获得您想要的。

你没有办法解决这个问题。c++中的运算符优先级规则是固定的,不能重载。

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

cout << (s3 -= m2);

那么你的原始代码应该可以工作了。另一种选择是将行一分为二:

s3 -= m2;
cout << s3;