处理两个条件的最简单方法

时间:2014-03-13 18:59:20

标签: c++ if-statement

这与之前的问题相同,但在描述问题时我犯了很多错误。所以我再试一次。请原谅我的术语。这可能是错的。我是编程新手。

我有两个指向对象的指针(我认为)A和B.他们看起来有点像这样:

Class1* A = Blah->Method1();
Class2* B = A->Method2(); 

在执行某些代码之前,我必须检查这些是否存在。以下是条件:

  • A和B都存在:执行Action1和Action2
  • 其中一个存在,其中一个为null:仅执行Action1
  • 两者都为null:仅执行Action1

这是我到目前为止的代码:

if (A){
/*some code here. B is created here */
    if (B){
        // Perform action1. Action1 always comes before Action2
        // Perform action2
    }
}
else{
    //Perform action1
}

这适用于4个案例中的3个。当A存在但B为空时失败。

我该如何改进? (如果可能的话,同时将//Perform Action 1保留在最里面的if。其他建议也是受欢迎的。)

谢谢。

2 个答案:

答案 0 :(得分:6)

  
      
  • A和B都存在:执行Action1和Action2
  •   
  • 其中一个存在,其中一个为null:仅执行Action1
  •   
  • 两者都为null:仅执行Action1
  •   

所以,真的,你想要:

action1();

if (a && b) {
  action2();
}

您的条件始终涉及调用action1;它没有理由被if看守。如果找到action2a,则会调用b

答案 1 :(得分:0)

很多比上次更清晰。这使解决方案变得简单明了:

bool doAction2 = false;
if (A) {
    /*some code here. B is created here */
    doAction2 = (B != null);
}
action1();
if (doAction2) {
    action2();
}