Varsa, sınıf örneklerine unordered_map
işaretçilerim var, bu eşlemdeki bir nesneyi silmek örneği de silebilir mi?std :: unordered_map <std :: String, myClass *> - std :: unordered_map :: erase() myClass 'DTor'unu çağırır mı?
(soruyu yanıtlama :) Bu örneği silmek istediysem hangi sürüm doğru olurdu?
if(it != map.end())
{
delete it->second;
map.erase(it);
}
veya basitçe
if(it != map.end())
map.erase(it);
?
GÜNCELLEME: birçok kişi tarafından önerildiği gibi shared_ptr
'u kullanmaya başladım ve harika çalışıyor!
'silme 'kendiliğinden işaretçiyi sızdırıyordu. "Unique_ptr" nin bir haritasını kullanmayı düşünün. –
İşaretçilerin sahipliğini alması gerekiyorsa, neden bir "unique_ptr" kullanmıyorsunuz, bu sizin için nesneyi silecek? – MicroVirus
Teşekkür ederiz. Harita sadece bir arama ismidir, uygulamamın geri kalanı işaretçileri kullanmalıdır, bu yüzden serbest işaretçiyi kullanmamak için başka önlemler alıyorum. – St0fF