首页 > 解决方案 > 如何在其他两个函数成功的返回状态下干净地执行一个函数?

问题描述

我有一个函数依赖于其他两个函数的成功返回状态。即,如果任一函数失败,则第三个函数需要更新自身内部的某些内容以反映这一点,但仍继续进行。有没有一种干净的方法来执行这第三个功能,而不是多余的?

就我而言,我有以下内容,在哪里func1返回func2成功或失败:

bool status;
bool status2;
status = func1();
status2 = func2();
if (status && status2){
 func3(other_args,true)
else func3(other_args, false);

而且我觉得这根本做得不好。我func3编写了大量信息,并依赖于知道所执行的任何操作是否失败。有没有更简洁的方法来实现这第三个函数调用?

我的第一个想法是:

if (func1 && func2){
    func3(some_other_args, true)
else func3(some_other_args, false)

这是正确的心态,还是这里有更清洁的东西?

标签: c++c++11

解决方案


只需将条件作为参数传递以避免分支。

status = func1();
status2 = func2();
func3(other_args, (status && status2))

推荐阅读