[英]can i pass std::ostream& to a function expecting std::ofstream
[英]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.