myClass
用途によっては、追加の状態情報を格納する必要がある汎用クラスがあります。これは通常、で行われますが、クラスインスタンスが破棄されたときにメモリが自動的に解放されるように、をvoid*
使用できるかどうか疑問に思いました。std::unique_ptr<void, void(*)(void*)>
問題は、void *を削除すると未定義の動作が発生するため、カスタム削除機能を使用する必要があることです。
デフォルトでを構築する方法はありますか?std::unique_ptr<void, void(*)(void*)>
最初にダミーの削除機能を使用して構築し、次にvoid*
状態構造体にを使用するときに実際の削除機能を設定する必要はありませんか?または、クラスに状態情報を格納するためのより良い方法はありますか?
サンプルコードは次のとおりです。
void dummy_deleter(void*) { }
class myClass
{
public:
myClass() : m_extraData(nullptr, &dummy_deleter) { }
// Other functions and members
private:
std::unique_ptr<void, void(*)(void*)> m_extraData;
};