問題タブ [enable-shared-from-this]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - enable_shared_from_this が bad_weak_ptr エラーを返す
プロジェクトでブースト ライブラリを使用しています。残りの http クライアント コードを書いているときに、このエラーが発生しました。
libc++abi.dylib: タイプ std::__1::bad_weak_ptr: bad_weak_ptr のキャッチされない例外で終了します
コンストラクタで shared_from_this を呼び出していないのにエラーが発生しました。あなたの知恵を分けてください。ありがとう!
c++ - オブジェクトの初期化中のスマート ポインターとの所有権の共有
A
classへのメンバーポインタを持つクラスがありますB
:
私のmain
関数では、shared_ptr
of クラスを作成し、A
両方のクラスのいくつかのメソッドを使用します。
ただし、 のメソッドを使用する前にB
、ポインターfunc1()
をリセットしたいと思います。spA
しかし、オブジェクトspA
が指しているが、まだ破棄することは許可されていません ( が指すオブジェクトはのメンバーのspB
一部に対する参照を保持できるため、設計要件)。A
それができるようにするために、B
へのポインターも保持できると思いました。しかし、はのコンストラクターから作成されるため、まだ初期化するオブジェクトはありません。A
A* m_A
B
A
A
m_A
のコンストラクターを に渡しthis
ても問題は解決しません。これは、 の最初の行で作成された と所有権を共有しないためです。A
createB(this)
spA
main()
spA
spA.reset()
私が持っていた別の選択肢は、を作成することでしm_A
たが、オブジェクトがまだ作成されていないため、のコンストラクターをに渡すshared_ptr
ことは不可能です。shared_from_this()
A
createB(this->shared_from_this())
A
この問題を解決する方法について何か提案はありますか?