0
他の型へのポインタを含むシンプルなシングルトンクラスをC++で作成したいと思います。シングルトンクラスからオブジェクトを削除する
シングルトンはある時点でそのポインタの所有者になります。
だから、型テストのオブジェクトを削除し、シングルトンのデストラクタでそれのメモリを解放するための良い方法このう?。
class Test{...};
class Singleton
{
public:
static Singleton& getInstance()
{
static std::unique_ptr<Singleton> instance(new Singleton());
return *instance.get();
}
void SetTest(Test* test);
Test* GetTest() const;
...
private:
Singleton(){}
~Singleton(){ if(test) delete test;} // ??
Test* test;
...
};
PS:Testオブジェクトにはスマートポインタを使用できません。
あなたは "他の型のオブジェクトへのポインタ"を意味していると思います。型へのポインタはありません – user463035818
おそらくコンストラクタで 'test'を初期化するべきでしょう。そうでなければ、ユーザが決して 'SetTest'を呼び出さなければ、' GetTest'は無効なポインタを返し、デストラクタは割り当てられていないものを削除しようとします。 –
厳密に言えば、シングルトンは反パターンです。おそらくあなたが所有する必要があるものは、あなたのコードでより大きなアンチパターンを示すでしょう。 – StoryTeller