我试图创建通用的流类持有者,但似乎我无法传递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;
}
Run Code Online (Sandbox Code Playgroud)
编译时失败:
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
Run Code Online (Sandbox Code Playgroud)
为什么?
x(std::cout);
Run Code Online (Sandbox Code Playgroud)
相当于
x std::cout;
Run Code Online (Sandbox Code Playgroud)
它试图声明一个名为的局部变量std::cout.这是不允许的.
如果你想声明一个类型的变量x,传递std::cout给它的构造函数,那就是
x x(std::cout);
Run Code Online (Sandbox Code Playgroud)
虽然,为了您的理智,最好给它一个不同的名称(并更改以下行以使用该名称).
| 归档时间: |
|
| 查看次数: |
188 次 |
| 最近记录: |