如何调用接受 std::istream& 的函数



我是C++的初学者。调用需要std::istream&的函数的正确方法是什么?

read(std::cin);尝试过,但我从编译器那里得到了一个错误。

typedef double Element;
template<typename T>
std::list<T> read(std::istream& i) {  
Element input;
std::list<Element> l;
while(i>>input) {
l.push_back(input);
}
return l;
}

这与std::istream&参数无关。

问题是,函数是一个函数模板,需要一个明确的模板参数来确定应该从流中读取的类型,例如:

read<int>(std::cin)

来自编译器的错误消息也应该告诉您类似的信息。

除此之外,在函数中不使用T。可能您想用T替换Element的所有使用,并删除typedef

您只有一个小语法错误:

试试这个代码:

typedef double Element;
class test{
public:
auto read(std::istream& i){
Element input;
std::list<Element> l;
while(i>>input){
l.push_back(input);
}
return l;
}

};

int main(){
test t;
t.read(std::cin);
return 0;
}

最新更新