簡體   English   中英

如何將對`std :: cout`的引用存儲為類成員

[英]How can I store a reference to `std::cout` as a class member

我正在使用一個意味着像這樣使用的類:

Output() << "Hello.\n";

在它的operator<<我明確地使用std::cout ,但是我希望有一個靜態類成員解析為`std :: cout'所以我可以做這樣的事情:

copy(some_string_set.begin(), some_string_set.end(), ostream_iterator<string>(Output::m_stream, ", "));

或類似的東西(我不能修復底線,直到我修復靜態數據成員。

我甚至試過auto ,但海灣合作委員會投了一個

錯誤:'std :: cout'不能出現在常量表達式中

對我。 我怎么能做我想做的事? (關鍵是不必在我的代碼中使用std::cout ,但所有輸出都通過Output類)

struct Output
{
    static ostream& stream;
};

ostream& Output::stream = cout;

int main()
{
    Output::stream << "hey";
}

在這里工作正常。

將其存儲為std::ostream*

有時人們將引用存儲為成員。 這很容易出錯,因為無法重新分配引用,這會導致賦值運算符執行錯誤操作。

你應該存儲一個std::ostream &

暫無
暫無

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

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