从方法返回void以防止执行

时间:2015-01-20 21:23:49

标签: c++ if-statement return

我正在尝试退出一个在检查条件后返回void的方法(我意识到如果我抛出异常会更容易,但我试图避免这个项目)。我有下面的代码,如果我正确解释它,它应返回if语句,但整个方法仍在执行。代码中是否存在问题(如果需要,我可以发布更多内容),还是有更好的方法来编写它而无需异常处理?

void Rational::divide(Rational b) {
    if (b.numerator == 0) {
        cout << "Cannot divide by zero." << endl;
        return;
    } else if (b.numerator != 0) {
       numerator = numerator * b.denominator;
       denominator = denominator * b.numerator;
       reduce();
    }
}

编辑:我已更新代码以反映一些建议;只是为了澄清,if语句本身正在正确执行(如果b为零,我收到错误消息) - 一旦打印出错误消息,该方法的其余部分将继续运行。

编辑2:更新了else if修订版。

1 个答案:

答案 0 :(得分:0)

这就是你在做什么。您可能希望在if声明中执行以下操作:if((double)b.denominator == 0.f)

在与浮点数比较时也应该小心,或者由于它们在内存中的表示方式而加倍。它几乎不会完全为零,所以你应该与epsilon进行比较。