2
オブジェクトをヒープに割り当てる必要があるので、デストラクタがプライベートであるクラスを管理しています。デストラクタがプライベートであるときに、C++ 11で一意のポインタを使用する方法は?
は、このaはデストラクタが呼び出され、範囲外であるときのはA.
std::unique_ptr<A> a(new A());
として、このクラスを想定してみましょう。
ただし、unique_ptrのデフォルトの動作では、 "public destructor"が呼び出されます。
この場合、デストラクタを公開せずにどうすればよいですか?
'友達のstdを置く:: unique_ptrを試してみてください:: deleter_type;'内部 'A' –
は、 "ヒープに割り当てなければなりません" - あなたが意味する場合は、作り、ヒープに割り当てなければなりませんデストラクタプライベートは最良の方法ではありません。すべてのコンストラクタをプライベートにして、 'unique_ptr'を返すファクトリ関数を介してのみオブジェクトを作成できるようにします。さもなければ、クライアントは毎回奇妙な構文に対処しなければなりません。 –
@PiotrSkotnicki残念ながら、それは移植性がありません。 Deleterは、実際の削除のためにクラスの一部ではないヘルパー関数を使用することがあります。そして、それは再び失敗します。 –