我有一个通用类myClass
有时需要存储额外的状态信息,具体取决于用途。这通常使用void*
完成,但我想知道是否可以使用std::unique_ptr<void, void(*)(void*)>
,以便在类实例被破坏时自动释放内存。问题是,我需要使用自定义删除程序来删除void *,导致未定义的行为。使用std :: unique_ptr <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;
};
当我们有模板时,'void'指针确实没有多大用处。 – 2013-03-13 12:04:11
这听起来像是[xy问题](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。 – Pubby 2013-03-13 12:06:37
您确定要在这里使用'unique_ptr',而不是'shared_ptr'吗? – 2013-03-13 12:12:43