簡體   English   中英

我可以制作兩個 std::ostream-s 的 std::pair 嗎?

[英]Can I make std::pair of two std::ostream-s?

我想做一對包含兩個std::ostream object。 我需要這個,以便我可以將單個 object 傳遞給各種函數,而不是兩個std::ostream對象。 我希望我能做到這一點

#include <iostream>
#include <ostream>

using namespace std;

int main(){

    std::ostream output( std::cout.rdbuf());
    std::ostream error(std::cout.rdbuf());

    using Logger = std::pair< std::ostream, std::ostream >;
    Logger logger = std::make_pair( output, error );

  return 0;
}

但我得到一個編譯器錯誤,沒有匹配的構造函數pair<std::basic_ostream<char>, std::basic_ostream<char> >

您遇到的問題是無法復制ostream
解決方案是使用一對引用:

using Logger = std::pair<std::ostream &, std::ostream &>;
Logger logger { output, error };

您可以對它們進行一對引用,而不是流不支持的復制

auto logger{::std::tie(output, error)};

暫無
暫無

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

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