在我执行操作之前,有些地方会检查有效的指针;这些检查有时可以嵌套得相当深。嵌套如果(x)检查 - 写这个更好的方法?
例如,我有
if (a)
{
if (a->b())
{
if (a->b()->c())
{
a->b()->c()->DoSomething();
}
}
}
我真的不喜欢这个样子。有没有办法把它变成更可读的东西?理想情况下,
if (a && a->b() && a->b()->c())
{
...
}
会很好,但显然不会工作。
编辑-nvm我举的例子是否像大家都指出的那样工作。我做了测试,看看它是否有效,但是在我的测试中我的代码中存在一个错误。咄!
为什么不工作? – 2010-05-20 16:42:51
它显然*会*在你发布的例子中工作。在你遗漏的“其他”案件中发生了什么? – 2010-05-20 16:43:19
是什么让你觉得不起作用?短路评估几乎可以保证两者意味着相同的事情(除非你已经重载'operator &&')。 – 2010-05-20 16:43:27