我是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;
}