Kodumda kapsamlı olarak boost:shared_ptr
kullanıyorum. Aslında, yığın üzerinde tahsis edilen nesnelerin çoğu, bir shared_ptr
tarafından tutulur. Ne yazık ki bu, this
'u shared_ptr
alan tüm işlevlere geçiremediğim anlamına gelir. Bu kodu göz önünde bulundurun: Burada iki sorun vardır. İlk olarak, bu derleme yapmaz çünkü shared_ptr
için T * kurucusu açıktır. İkincisi, bar(boost::shared_ptr<Foo>(this))
ile oluşturmaya zorlarsam, nesneme ikinci bir paylaşımlı işaretçi yaratacağım ve sonunda bir çift silmeye yol açacağım.Bu destek için bir destek :: shared_ptr alma
Bu soru bana şu soruyu getiriyor: Var olan ortak bir işaretçinin kopyasını almak için herhangi bir standart desen var mı? Burada tek seçeneğimi saymak intrusive referans kullanıyor mu?
"müdahaleci başvuru buraya benim tek seçenek sayma kullanarak _Is _ "Bu seçenekte sorun nedir? – curiousguy
Belki de hiçbir şey. Durumunuza göre değişir. Nesnelerinizi büyütür ve smartpointer'leri tuttuğunuz sınıflar üzerinde kontrole sahip olmadığınız yerlerde çalışmayabilir. –
enabe_shared_from_this std 'artık ::'. Cevabıma bir bak. –