2012-11-12 13 views
9

Sadece zayıf_ptr'nin geçerli bir nesneyi işaret edip etmediğini görmek için geçici bir share_ptr oluşturmak zorunda kalmamak çok etkili görünüyor. Nesneye bile erişmek istemiyorum. Bunun nedeni, shared_ptr'nin bir vektöründen bir zayıf_ptr döndüren ve boş bir zayıf_ptr döndürdüğü bir işleve sahip olduğudur, bu, nesnenin bu GUID ile zaten mevcut olmadığı anlamına gelir.Sadece geçerli bir nesneyi işaret ediyorsa, test etmek için zayıf_ptr.lock() kullanmalı mıyım?

Sadece bir nesne olup olmadığını test ediyorum.

Bir paylaşımlı_ptr oluşturmadan, zayıf_ptr'nin boş olup olmadığını kontrol etmenin başka bir yolu var mı?

+0

Lock() işlevini kullanabilirsiniz – imreal

+0

İlk olarak zayıf göstericiyi nasıl buldunuz? _Satınacak olan arayüz. –

+1

lock() bir shared_ptr döndürüyor, bu yüzden bu yazıyı yaptım. – EddieV223

cevap

20

expired() üye işlevini kullanabilirsiniz.

+1

'use_count' da. – Pubby

+4

@Tubby: 'if (someVector.empty())' seçeneğini 'if (someVecor.size() == 0)' seçeneğini kullanmayı tercih ediyorum. Bu davada aynı sürenin dolmasını tercih ediyorum. Daha açık –

+0

Microsoft'a özel bir işlev veya soru olmadığı sürece Microsoft belgelerini kullanmaktan nefret ediyorum. Daha iyi olur http://en.cppreference.com/w/cpp/memory/weak_ptr/expired –