我有一个通用类myClass
,有时需要根据使用情况存储额外的状态信息。这通常使用 a 完成void*
,但我想知道是否可以使用 astd::unique_ptr<void, void(*)(void*)>
以便在类实例被破坏时自动释放内存。问题是我需要使用自定义删除器,因为删除 void* 会导致未定义的行为。
有没有办法默认构造 a 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;
};