返回c ++错误处理返回值错误

时间:2013-04-18 00:10:20

标签: c++ try-catch

我有一个类,我已经给了一些错误输入处理。这是一个已经给它自己的“提取”操作符的类,我被要求实现我给出的代码。我遇到的问题是我应该使用的代码看起来与此类似。

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())

因为我认为我想继续输入,直到它由于某种原因失败。为什么这种情况下的返回值会导致问题?

1 个答案:

答案 0 :(得分:1)

心理调试表明:

你的封闭函数有一个

形式的签名
std::istream& func_name(/*parameter list goes here*/)

因此编译错误