如何调用接受 std::istream& 的函数
How to call the function that accepts 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
。可能您想将 Element
的所有用法替换为 T
并删除 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;
}
我是 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
。可能您想将 Element
的所有用法替换为 T
并删除 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;
}