1

そこにいる専門家、

過去に私を大いに助けてくれたこの掲示板に実際に質問を投稿するのはこれが初めてです。私はまだプログラミングの初心者で、ここ数か月でプログラミングとソフトウェア開発について多くのことを学ぼうとしています。

最近、「c++11-スマート ポインター」というトピックに取り組み、数週間前に学んだすべてのデザイン パターンを書き直すことにしました。これには、リソース管理に shared_ptr と weak_ptr を使用する「オブザーバー パターン」が含まれます。

オブザーバー パターンの単純な実装 (Head First のデザイン パターンや E.Gamma によるデザイン パターンなど) を作成しようとしていたとき、観察可能なサブジェクトとオブザーバーの両方にインターフェイス クラスを使用し、それぞれに具体的なクラスを 1 つだけ使用しました。 、Visual Studio からさまざまなエラー メッセージが表示されました。このパターンで shared_ptr と weak_ptr を組み合わせる方法がわかりません。これは、両方の組み合わせをまだ完全に理解していないことが原因である可能性があります。

残念ながら、インターネットで徹底的に検索しても、オリエンテーションとして役立つ「スマート ポインターを使用したオブザーバー パターン」の簡単な例は見つかりませんでした。

したがって、あなたの誰かがそのような単純な実装を見つける場所を知っているか、あなた自身の実装を私に提供してくれるかどうか疑問に思っていました. どちらも本当に役に立ちます:-)

どうもありがとう

コーダーアンディ

4

1 に答える 1

7

オブザーバー パターンは、スマート ポインター (少なくとも通常の候補) が不適切な場合の典型的な例です。サブジェクトもオブジェクトもお互いを「所有」しません。それぞれに寿命があります。実際、オブザーバー パターンがよく使用されるのは、オブジェクトが所有していない別のオブジェクトへのポインターを持っている場合です。オブザーバーとして登録し、オブザーバー オブジェクトが破棄されたときに通知されるようにします。

全体を後方から攻撃しているように聞こえます。あなたには解決策 (スマート ポインター) があり、すべての問題を解決しようとしています。それは決してうまくいきません。

于 2013-07-15T07:56:55.647 に答える