問題タブ [weak-ptr]
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++ - std::weak_ptr の c++11 std::unordered_set を作成する方法
私はこのようなセットを持っています:set<weak_ptr<Node>, owner_less<weak_ptr<Node> > > setName;
それは正常に動作します。しかし、それを順不同のセットに変更したいと思います。ただし、これを行うと、約 6 ページのエラーが発生します。それを行う方法はありますか?
エラーメッセージのすべてのページを調べた後、役立つ可能性のある行を見つけました。
c++ - weak_ptrは、共有リソースの有効期限が切れたことをどのようにして知るのですか?
次のコードを検討します。
参照していたリソースが本質的に別のリソースに置き換えられたweak_ptr
ことを考慮して、期限切れになったことをどのようにして知ることができますか?古い共有リソースが破棄され、新しい共有リソースに置き換えられたことを確認するために、shared_ptr
何weak_ptr
を追跡しますか?そのような方法の定義例(該当する場合)をいただければ幸いです。lock
weak_ptr
c++ - リストからオブジェクトを自動的に追加および削除する
クラスがあります。このクラスがインスタンス化されたら、インスタンスをリストに追加します。オブジェクトが削除されたら、リストから削除します。
そのため、オブジェクトにそれ自体への共有ポインターを与えます。次に、これらの共有ポインターへの弱いポインターのリストを取得します。オブジェクトが作成されると、それ自体への共有ポインターが作成され、それへの弱いポインターが作成され、その弱いポインターがリストに入れられます。
オブジェクトが破棄されると、共有ポインターも破棄されます。リスト内のメンバーにアクセスしようとするときはいつでも、有効期限が切れていないこと、およびその使用回数が 0 でないことを確認します。それにもかかわらず、リスト メンバーが破棄されるとクラッシュします。なんで?私はそれを回避できますか?これが私のSSCCEです:
このプログラムの出力は次のとおりです。
c++ - ブースト範囲weak_ptr
値が弱いポインターであるマップがあります。これは機能します:私はこれを書くことができますが:
ロックされた共有ポインターに変換される新しい範囲が必要です。このようなもの:
ただし、その変換がどのように見えるべきかを理解できませんでした。またはそれが変換である必要がある場合。
誰にもアイデアはありますか?このパターンはかなり一般的であると確信しています。
boost - shared_ptr サイクリング参照をブーストしますか?
boost::shared_ptr に関するブースト ドキュメントから:
実装は参照カウントを使用するため、shared_ptr インスタンスのサイクルは回収されません。たとえば、main() が A への shared_ptr を保持し、それが直接的または間接的に A への shared_ptr を保持している場合、A の使用回数は 2 になります。 「ブレイクサイクル」。
この段落が理解できませんでした。この状況の最小限の例を挙げて、その結果を説明していただけますか。
c++ - 生ポインタとweak_ptrの違いは何ですか?
タイトル通り。この質問にはおそらくすでに答えがありますが、私は答えを見つけることができませんでした。
c++ - マルチスレッド C++ での std::weak_ptr.lock セマンティック
std は次のように述べています。
戻り値:
しかし、有効期限が切れて false を返す (オブジェクトはまだ存在する) と、shared_ptr の構築の間に、別のスレッドが最後の強い参照を削除して、予期しない例外をスローする可能性がありますか? これを防ぐ方法は?
または私は何かが恋しいですか?
c++ - スマート ポインターを使用して C++ で「オブザーバー パターン」?
そこにいる専門家、
過去に私を大いに助けてくれたこの掲示板に実際に質問を投稿するのはこれが初めてです。私はまだプログラミングの初心者で、ここ数か月でプログラミングとソフトウェア開発について多くのことを学ぼうとしています。
最近、「c++11-スマート ポインター」というトピックに取り組み、数週間前に学んだすべてのデザイン パターンを書き直すことにしました。これには、リソース管理に shared_ptr と weak_ptr を使用する「オブザーバー パターン」が含まれます。
オブザーバー パターンの単純な実装 (Head First のデザイン パターンや E.Gamma によるデザイン パターンなど) を作成しようとしていたとき、観察可能なサブジェクトとオブザーバーの両方にインターフェイス クラスを使用し、それぞれに具体的なクラスを 1 つだけ使用しました。 、Visual Studio からさまざまなエラー メッセージが表示されました。このパターンで shared_ptr と weak_ptr を組み合わせる方法がわかりません。これは、両方の組み合わせをまだ完全に理解していないことが原因である可能性があります。
残念ながら、インターネットで徹底的に検索しても、オリエンテーションとして役立つ「スマート ポインターを使用したオブザーバー パターン」の簡単な例は見つかりませんでした。
したがって、あなたの誰かがそのような単純な実装を見つける場所を知っているか、あなた自身の実装を私に提供してくれるかどうか疑問に思っていました. どちらも本当に役に立ちます:-)
どうもありがとう
コーダーアンディ