問題タブ [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.

0 投票する
1 に答える
327 参照

c++ - enable_shared_from_this が bad_weak_ptr エラーを返す

プロジェクトでブースト ライブラリを使用しています。残りの http クライアント コードを書いているときに、このエラーが発生しました。

libc++abi.dylib: タイプ std::__1::bad_weak_ptr: bad_weak_ptr のキャッチされない例外で終了します

コンストラクタで shared_from_this を呼び出していないのにエラーが発生しました。あなたの知恵を分けてください。ありがとう!

0 投票する
0 に答える
31 参照

c++ - オブジェクトの初期化中のスマート ポインターとの所有権の共有

Aclassへのメンバーポインタを持つクラスがありますB:

私のmain関数では、shared_ptrof クラスを作成し、A両方のクラスのいくつかのメソッドを使用します。

ただし、 のメソッドを使用する前にB、ポインターfunc1()をリセットしたいと思います。spAしかし、オブジェクトspAが指しているが、まだ破棄することは許可されていません ( が指すオブジェクトはのメンバーのspB一部に対する参照を保持できるため、設計要件)。A

それができるようにするために、Bへのポインターも保持できると思いました。しかし、はのコンストラクターから作成されるため、まだ初期化するオブジェクトはありません。AA* m_ABAAm_A

のコンストラクターを に渡しthisても問題は解決しません。これは、 の最初の行で作成された と所有権を共有しないためです。AcreateB(this)spAmain()spAspA.reset()

私が持っていた別の選択肢は、を作成することでしm_Aたが、オブジェクトがまだ作成されていないため、のコンストラクターをに渡すshared_ptrことは不可能です。shared_from_this()AcreateB(this->shared_from_this())A

この問題を解決する方法について何か提案はありますか?