簡體   English   中英

無法將std :: cout傳遞給ostream&構造函數

[英]Cannot pass std::cout to ostream& constructor

我試圖創建通用流類持有人,但似乎無法將std::cout傳遞給它,代碼:

#include <iostream>

struct x
{
    std::ostream &o;
    x(std::ostream &o):o(o){}
};

int main()
{
    x(std::cout);
    x.o<<"Hi\n";
    return 0;
}

編譯為時失敗:

c++ str.cc -o str -std=c++11
str.cc: In function ‘int main()’:
str.cc:11:14: error: invalid use of qualified-name ‘std::cout’
str.cc:12:4: error: expected unqualified-id before ‘.’ token

為什么?

x(std::cout);

相當於

x std::cout;

它試圖聲明一個名為std::cout的局部變量。 那是不允許的。

如果要聲明類型為x的變量,將std::cout傳遞給其構造函數,則

x x(std::cout);

不過,為了您的理智,最好為類指定一個不同的名稱(並更改以下行以使用該名稱)。

采用:

int main()
{
    x object(std::cout);
    object.o << "Hi\n";
    return 0;
}

暫無
暫無

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

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