std::ostream 类 的组成
std::ostream Composition of Classes
我们有以下情况:
在 类 A 和 B 中,我们覆盖了 <<
运算符。
现在,我们有了一个新的 class C,其中包含 A 和 B 对象的数据成员。
我们如何在这里覆盖 <<
运算符?
更具体地说,
我们需要这样的东西:
cout<<objectOfC
对应cout<<correspondingObjectOfA<<correspondingObjectOfB
我不知道如何修改 ostream& 对象以便 return 它返回。
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<<
returns 它的 ostream
参数,你可以进一步压缩这个:
ostream& operator<< (ostream& out, const C& obj) {
return out << *obj.AObject << *obj.BObject;
}
我们有以下情况:
在 类 A 和 B 中,我们覆盖了 <<
运算符。
现在,我们有了一个新的 class C,其中包含 A 和 B 对象的数据成员。
我们如何在这里覆盖 <<
运算符?
更具体地说,
我们需要这样的东西:
cout<<objectOfC
对应cout<<correspondingObjectOfA<<correspondingObjectOfB
我不知道如何修改 ostream& 对象以便 return 它返回。
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<<
returns 它的 ostream
参数,你可以进一步压缩这个:
ostream& operator<< (ostream& out, const C& obj) {
return out << *obj.AObject << *obj.BObject;
}