生のポインターであるポインターで shared_from_this() を呼び出そうとしたときにスローされた bad_weak_ptr エラーをキャッチする以外に、オブジェクトが参照カウントされているかどうかをテストする方法はありますか?
生ポインタと共有ポインタを扱う関数がありますが、間違ったものを使用したときにエラーが明らかであることを確認したいですか? もちろん、エラーをキャッチすることもできますが、この特定のケースをテストする簡単な方法があるかどうか疑問に思いましたか?
生のポインターであるポインターで shared_from_this() を呼び出そうとしたときにスローされた bad_weak_ptr エラーをキャッチする以外に、オブジェクトが参照カウントされているかどうかをテストする方法はありますか?
生ポインタと共有ポインタを扱う関数がありますが、間違ったものを使用したときにエラーが明らかであることを確認したいですか? もちろん、エラーをキャッチすることもできますが、この特定のケースをテストする簡単な方法があるかどうか疑問に思いましたか?
への呼び出しstd::enable_shared_from_this<T>::shared_from_this()
は、既存の有効なオブジェクトまたはそれへのポインターに対して失敗することはありません。std::shared_ptr<YourClass>
編集: ... where YourClass
isのインスタンスが少なくとも 1 つある場合std::enable_shared_from_this<YourClass>
。これは最初のものよりも厳しい声明であり、誤解された場合はお詫び申し上げます.
クラスのインスタンスshared_from_this()
のみを作成することにより、 の有効性を保証します。例外をキャッチする以外に、インスタンスが によって管理されているshared_ptr
かどうかを確認する方法はありません。YourClass
shared_ptr
生のポインターとマネージド ポインターを混在させないでください。