0

生のポインターであるポインターで shared_from_this() を呼び出そうとしたときにスローされた bad_weak_ptr エラーをキャッチする以外に、オブジェクトが参照カウントされているかどうかをテストする方法はありますか?

生ポインタと共有ポインタを扱う関数がありますが、間違ったものを使用したときにエラーが明らかであることを確認したいですか? もちろん、エラーをキャッチすることもできますが、この特定のケースをテストする簡単な方法があるかどうか疑問に思いましたか?

4

2 に答える 2

2

への呼び出しstd::enable_shared_from_this<T>::shared_from_this()は、既存の有効なオブジェクトまたはそれへのポインターに対して失敗することはありません。std::shared_ptr<YourClass>編集: ... where YourClassisのインスタンスが少なくとも 1 つある場合std::enable_shared_from_this<YourClass>。これは最初のものよりも厳しい声明であり、誤解された場合はお詫び申し上げます.

クラスのインスタンスshared_from_this()のみを作成することにより、 の有効性を保証します。例外をキャッチする以外に、インスタンスが によって管理されているshared_ptrかどうかを確認する方法はありません。YourClassshared_ptr

于 2010-11-03T18:49:41.027 に答える
1

生のポインターとマネージド ポインターを混在させないでください。

于 2010-11-03T18:50:43.127 に答える