簡體   English   中英

std::ostream 類的組成

[英]std::ostream Composition of Classes

我們有以下情況:

在 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;
}

任何幫助將不勝感激。 謝謝 :)

如果您已經有適當的AB覆蓋,只需使用它們。

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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM