错误:在 c++ 中"Control may reach end of non-void function"
Error: "Control may reach end of non-void function" in c++
我了解错误消息的基本内容;它提醒我,此代码可能根本不会返回任何内容。但是,我不明白为什么。我的代码很完美,不是吗?
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)
则不会返回任何该类型的内容。因此发出警告。
相关文章:
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 反转依赖于 end() 的迭代器
- std::multimap<std::chrono::milliseconds, T>::rbegin 在 MSVS-13 中指向 end()?
- 在C++中使用 Catch 测试框架编译错误"error: expected ';' at end of declaration list"
- remove(str.begin(), str.end(), );无法正常工作(我正在使用视觉工作室 2012)
- 在 ifcondition al中 find() C++ STL 中的 == a.end() 有什么用?
- 野牛/yacc 解析器在不被空格分隔时跳过 grammer - "unexpected $end"
- "错误 C0000:语法错误,令牌"<EOF>"处出现意外$end,并且不确定
- 了解向量中的 .begin 和 .end
- 如何实现链表的 end()?
- 使用 map.end() 访问 map 的最后一个元素
- 抑制非平凡无用的警告"control may reach end of non-void function"
- 我在C++年写了一个findClosestPrime(),但Xcode抱怨"Control may reach end of non-void function"
- 收到此警告" Control may reach end of non-void function "
- 困惑为什么"control may reach end of non-void function"
- "Control may reach end of non-void function"警告
- 错误:在 c++ 中"Control may reach end of non-void function"
- 错误:"control may reach end of non-void function"
- c++函数(错误:control may reach end of non - void function)