这与之前的问题相同,但在描述问题时我犯了很多错误。所以我再试一次。请原谅我的术语。这可能是错的。我是编程新手。
我有两个指向对象的指针(我认为)A和B.他们看起来有点像这样:
Class1* A = Blah->Method1();
Class2* B = A->Method2();
在执行某些代码之前,我必须检查这些是否存在。以下是条件:
这是我到目前为止的代码:
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。其他建议也是受欢迎的。)
谢谢。
答案 0 :(得分:6)
- A和B都存在:执行Action1和Action2
- 其中一个存在,其中一个为null:仅执行Action1
- 两者都为null:仅执行Action1
所以,真的,你想要:
action1();
if (a && b) {
action2();
}
您的条件始终涉及调用action1
;它没有理由被if
看守。如果找到action2
和a
,则会调用b
。
答案 1 :(得分:0)
这很多比上次更清晰。这使解决方案变得简单明了:
bool doAction2 = false;
if (A) {
/*some code here. B is created here */
doAction2 = (B != null);
}
action1();
if (doAction2) {
action2();
}