我有一门课,我得到了一些错误输入处理。 这是一个已赋予其自己的“提取”运算符的类,并且已要求我实现给出的代码。 我遇到的问题是我应该使用的代码与此相似。

try {
    while (some condition)
    {....implemented code....}
} catch (runtime_error& e) {
    cerr << e.what() << endl;
    return 1;
}

我正在编译的问题是它似乎不喜欢“ return 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 票数:1 已采纳

精神调试表明:

您的封闭函数具有以下形式的签名:

std::istream& func_name(/*parameter list goes here*/)

因此编译错误

  ask by Scott translate from so

未解决问题?本站智能推荐: