如何解决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;
}
任何帮助将不胜感激。谢谢:)
解决方法
如果您已经拥有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;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。