c++ - std::ostream 类的组合
问题描述
我们有以下情况:
在 A 类和 B 类中,我们重写了<<
操作符。
现在,我们有了一个新类 C,其中包含 A 和 B 对象的数据成员。
我们将如何覆盖<<
这里的运算符?
更具体地说,我们需要这样的东西:
cout<<objectOfC
对应于cout<<correspondingObjectOfA<<correspondingObjectOfB
我不知道如何修改 ostream& 对象以将其返回。
ostream& operator<< (ostream& out, const C& obj){ // This is a friend function declared in C.h
A* a = obj.AObject; // Returns the corresponding object of A
B* b = obj.BObject; // Returns the corresponding object of B
// Need to modify out somehow to 'cout' A and B respectively when cout is called on an object of C
return out;
}
任何帮助将不胜感激。谢谢 :)
解决方案
如果您已经对 and 进行了适当的覆盖A
,请B
使用它们。
ostream& operator<< (ostream& out, const C& obj) {
out << *obj.AObject << *obj.BObject;
return out;
}
因为operator<<
返回它的ostream
参数,你可以进一步压缩:
ostream& operator<< (ostream& out, const C& obj) {
return out << *obj.AObject << *obj.BObject;
}
推荐阅读
- google-apps-script - 如何使用脚本确保自动递增的 ID 在 Google 表格中是唯一的
- r - R中的平等 - 精度?
- c# - 获取 Salesforce 访问令牌时遇到问题。我有一个很有趣的邮递员电话,但它在代码中不起作用
- python-3.x - 使用 tinker 将 matplot 图形代码合并到另一个 GUI 代码中
- python - 如何使用 Pytesseract 提取图像中的小数点
- c# - 在较新版本的 AngleSharp 中,CssNode 的等价物是什么?
- amazon-ec2 - 如何获取我的 AWS EC2 实例列表
- swift - 当尝试根据用户记录的动作发送滚动事件时,滚动的距离与用户的不同
- django - 字段初始数据不显示在 ModelSelect2Widget 中
- c# - 我创建了一个使用 Google Translate API 的 C# 程序。但我无法获取非英语的结果