私は最近、私が最近書いたかなり複雑なプログラムを再設計しています。プログラムは、お互いに依存するさまざまなオブジェクトで構成されています。私が今実現しようとしているのは、オブジェクトの1つを変更して同じタイプのオブジェクトで置き換える(異なるオブジェクトの作成中に割り当てられる)さまざまなプロパティに置き換える機能です。スマートポインタオブジェクトを変更して後でアクセスする
この機能を実装する適切な方法は何でしょうか?
私はこれまで何をしましたか?
現在、私は、異なるオブジェクトを含むunique_ptrのセットを含む単一の「マスタークラス」を使用しています。 object1がobject2に依存しているとしましょう。したがって、構築中にobject2の入ったスマートポインタをobject1のコンストラクタへの参照によって渡します。
私は建設後object2はの機能にアクセスできるようにしたいと、私は何とか後で使用するためにそれを参照する必要があります。それは、特定のメモリを指すように、私は基礎となるオブジェクトに生のポインタを使用することはできません私の理解から
古いオブジェクトが置き換えられたときに変更される可能性のあるアドレス。 現在、私はスマートポインタ自体を参照する参照を使用しようとしています。スマートポインタ自体のアドレスは決して変更するべきではありませんが、object2がどこにあるかを常に意識してください。
これはオプションですか?今は、object2の中の特定の変数へのポインタを使用していた問題に取り組んでいるので(同じコードの書き込みと読み込みを中心に)、同じアドレス問題に再び遭遇することは間違いありません。この場合、最初の参照内の変数への参照を使用する必要がありますか?これは機能しますか?
スマートポインタを参照するローポインタを使用することもできますが、これは正しい方法ではないように感じます。私はC++を使い始めたばかりでなく、ポインタを過度に使用しているように感じたり、スマートポインタを正しく使用していない可能性があります。私は分かりません。あなたがする必要がどのような
これは、あなたが望むものによって異なります:現在、他のどのオブジェクトがそれに依存しているかに関係なく、「the object2」を変更しますか?次に共有ポインタのプールが考えられ、依存関係は共有ポインタデータメンバーとして表現されます。または、 "object1の現在のオブジェクト2"を変更しますか?次に、object1にはobject2への一意のポインターが含まれ、accessor関数を介してobject2が公開されます。 –