我有一个类,我已经给了一些错误输入处理。这是一个已经给它自己的“提取”操作符的类,我被要求实现我给出的代码。我遇到的问题是我应该使用的代码看起来与此类似。
try {
while (some condition)
{....implemented code....}
} catch (runtime_error& e) {
cerr << e.what() << endl;
return 1;
}
我编译的问题是它似乎不喜欢“返回1”值它给我一个错误:
invalid initialization of non-const reference of type ‘std::istream& {aka std::basic_istream<char>&}’ from an rvalue of type ‘int’
如果我删除返回值,它会直接编译,但是一旦它到达尝试执行try语句的区域,程序就无法执行。如上所述,我所拥有的代码就是我们应该实现的示例代码,所以我认为它是开箱即用的。我对while循环的条件是
while (!std::cin.fail())
因为我认为我想继续输入,直到它由于某种原因失败。为什么这种情况下的返回值会导致问题?
答案 0 :(得分:1)
心理调试表明:
你的封闭函数有一个
形式的签名std::istream& func_name(/*parameter list goes here*/)
因此编译错误