Ostream <<和运算符 -= 用于类?
Ostream << and operator -= for classes?
我有 2 个类S
和M
.当我尝试使用
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;
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 用于访问容器<T>数据成员的正确 API
- 重载操作程序时出错>>用于类中的字符串 memebr
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- C++中的cin.ignore()函数不适用于整个流
- 没有用于初始化C++中的变量模板的匹配构造函数
- 呼叫运营商<<临时
- 用于C++中带有数组和指针的循环
- 为什么它不适用于Visual 2019的原因
- 使用在用于SFINAE的void_t中具有参数的方法
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 过载输出<<用于类的运算符,以打印其中的元组
- 重载运算符<<用于模板类.即使使用好友关键字也无法获得私人会员
- 如何过载<<用于YAML::Emitter的运算符,以序列化包含另一个自定义类的向量的自定义类
- 重载运算符<<用于ostream语法
- 运算符<<(ostream&os,..)用于模板类
- 重载& lt; & lt;用于打印自定义异常的操作符
- Can运算符<<用于设计我们自己的输出显示方式