我们有一个庞大的遗留代码库,其中常用的指针类型更适合使用shared_ptrs。由于各种原因,这些指针类型现在需要进行共享。
与普通指针相比,shared_ptrs是不错的替代品,但是缺少了NULL检查。在代码中,我们经常对这些指针进行NULL检查,在转换为shared_ptrs后,这些空检查将始终通过。
是否有一种简便的方法来自动检测这些情况: if (foo == NULL) // 当 foo 是 boost::shared_ptr 时 ?
我们还没有使用C++11,但很快就会。
例如:
// declared elsewhere as : boost::shared_ptr<T> foo;
if (NULL != foo) //always true when shared_ptr. Correct check when raw pointer
{
foo->DoSomething();
}