Kullanıma bağlı olarak bazen fazladan durum bilgileri depolaması gereken genel bir sınıf myClass
var. Bu normalde bir void*
ile yapılır, ancak bir std::unique_ptr<void, void(*)(void*)>
kullanıp kullanamayacağımı merak ediyorum, böylece sınıf örneği imha edildiğinde bellek otomatik olarak serbest bırakılır. Sorun şu ki, bir void * silme tanımlanmamış davranışla sonuçlanırken özel bir deliciyi kullanmak zorundayım.std :: unique_ptr <void>'u bir akıllı boşluk gibi özel bir silme kullanarak *
Varsayılan olarak bir std::unique_ptr<void, void(*)(void*)>
oluşturmak için bir yol var mı, bu yüzden ben ilk önce bir kukla silme ile inşa etmem, daha sonra bir durum yapısı için void*
kullandığımda gerçek bir delici ayarlamak? Veya devlet bilgisini bir sınıfta saklamanın daha iyi bir yolu var mı? Muhtemelen
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;
};
Şablonlarımız varken 'void' işaretçileri için gerçekten çok fazla kullanım yok. –
Bu bir [xy problemi] gibi geliyor (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). – Pubby
Burada "unique_ptr" olmasını ve "shared_ptr" olmasını istemediğinden emin misiniz? –