最近、プロジェクトからシングルトンとグローバル変数の使用を削除しようとしていますが、そうするのに苦労しています。シングルトンとグローバル変数に代わるより良い方法をいくらか考案しましたが、アプリケーションが終了した後のデータの処理方法がわかりません。
私のアプリケーションは、ほとんどのコンポーネントが適切に機能するために、いくつかのものにアクセスする必要があります。一部のコンポーネントはアクセスするstatic std::vector<Foo*> foos;
必要があり、他のコンポーネントはアクセスする必要があり、一部のコンポーネントはstatic std::vector<Bob*> bobs;
両方にアクセスする必要があります。私が行ったことは、これらのベクトルの「マネージャー」、保護された静的ベクトルへのアクセスをそれを継承するクラスに与える FooManager と、他のベクトルに対して同じことを行う BobManager を作成することです。これにより、これら 2 つのオブジェクトの範囲が制限されます。私の問題は、プロセスの終了時に、各ベクトルのポインターをどこでどのように解放するのですか? 複数のクラスがこれらのオブジェクトの「マネージャー」になりました。派生クラスから?しかし、別のクラスが元のデータを必要としているときに何かの割り当てを解除するとどうなるでしょうか?
基本的に私の質問は、そうすべきではないときにポインターを削除しないようにするにはどうすればよいですか? unique_ptr? 共有_ptr? また、これの他の実装も大歓迎です。