我有一個通用類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