错误:在 c++ 中"Control may reach end of non-void function"

Error: "Control may reach end of non-void function" in c++

本文关键字:reach end of function non-void may Control c++ 错误      更新时间:2023-10-16

我了解错误消息的基本内容;它提醒我,此代码可能根本不会返回任何内容。但是,我不明白为什么。我的代码很完美,不是吗?

rational operator / (const rational &lhs, const rational &rhs)
{
if(rhs.numerator() != 0)
{
    int numerator = lhs.numerator() * rhs.denominator();
    int denominator = lhs.denominator() * rhs.numerator();
    rational quotient(numerator, denominator);
    return quotient;
}
else cout << "error" << endl;
}   //this is where error is occurring 

用题字注释进行的更正。

rational operator / (const rational &lhs, const rational &rhs)
{
  if(rhs.denominator() != 0) {
    int numerator = lhs.numerator() * rhs.denominator() + 
                    rhs.numerator() * lhs.denominator();
    int denominator = lhs.denominator() * rhs.denominator();
    rational quotient(numerator, denominator);
    return quotient;
  }
  else {
   // what should be returned?
   // let's return lhs, as caller is expecting something, lhs is better than nothing
   // ideally should raise exception, and program shopuld not continue further
   cout << "error" << endl; 
   return lhs; 
  }
}

所以它非常简单,您的函数需要返回一个类型rational。如果失败:

if(rhs.numerator() != 0) 

则不会返回任何该类型的内容。因此发出警告。