3

さまざまな理由から、shared_ptrs の方が適している、一般的に参照されるポインター型を持つ大規模なレガシー コードベースがあります。

shared_ptrs は、NULL チェックを除く通常のポインターの簡単な置き換えです。コード全体で、これらのポインターに対して定期的な NULL チェックを行っており、shared_ptrs への変換後、これらの null チェックは常にパスします。

これらのケースを自動的に検出する良い方法はありますか? 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();
}
4

3 に答える 3

-2

if (foo) が機能するはずです。また、 if(foo.get()) は機能します

于 2013-08-13T17:12:32.283 に答える