首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法将std::cout传递给ostream&构造函数

无法将std::cout传递给ostream&构造函数
EN

Stack Overflow用户
提问于 2015-03-23 17:56:19
回答 2查看 363关注 0票数 1

我试图创建泛型流类保持器,但似乎无法将std::cout传递给它,代码如下:

代码语言:javascript
复制
#include <iostream>

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

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

编译为:

代码语言:javascript
复制
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

为什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-23 18:01:59

代码语言:javascript
复制
x(std::cout);

等于

代码语言:javascript
复制
x std::cout;

它试图声明一个名为std::cout的局部变量。这是不允许的

如果您想声明一个类型为x的变量,并将std::cout传递给它的构造函数,那么

代码语言:javascript
复制
x x(std::cout);

尽管为了您的理智起见,最好给类指定一个不同的名称(并更改下面的行以使用该名称)。

票数 6
EN

Stack Overflow用户

发布于 2015-03-23 18:02:09

使用:

代码语言:javascript
复制
int main()
{
    x object(std::cout);
    object.o << "Hi\n";
    return 0;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29217127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档