我试图创建泛型流类保持器,但似乎无法将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为什么?
发布于 2015-03-23 18:01:59
x(std::cout);等于
x std::cout;它试图声明一个名为std::cout的局部变量。这是不允许的
如果您想声明一个类型为x的变量,并将std::cout传递给它的构造函数,那么
x x(std::cout);尽管为了您的理智起见,最好给类指定一个不同的名称(并更改下面的行以使用该名称)。
发布于 2015-03-23 18:02:09
使用:
int main()
{
x object(std::cout);
object.o << "Hi\n";
return 0;
}https://stackoverflow.com/questions/29217127
复制相似问题