enable_shared_from_this<Base>
kullanıyorum ve Base
'dan devralıyorum. 'un Derived
yapıcısını (başlatıcı listesi değil) kullanmaya çalışırken, bir istisna alıyorum. Dahili zayıf işaretçinin boş olduğunu ve this
'a işaret etmediğini ortaya çıkarır. Bu nasıl olabilir? Diğer kullanım durumum tam olarak mükemmel çalışıyor. Nereden başlayacağımı bile bilmiyorum. enable_shared_from_this
kaynak koduna baktım ve bana o işaretçi her zaman nullptr gibi görünüyor.enable_shared_from_this - boş iç zayıf işaretçi?
cevap
Nesnenin yapıcısında shared_from_this()
'u arayamazsınız. shared_from_this()
, nesnenin en az bir shared_ptr
'a ait olmasını gerektirir. Bir nesne, oluşturulmadan önce bir shared_ptr
'a ait olamaz.
shared_ptr
nesnenin ilk kez sahipliğini aldığında, iç zayıf göstericinin ayarlandığını tahmin ediyorum. Bu noktadan önce, zayıf göstericinin referans gösterebileceği bir referans sayısı yapısı yoktur.
James McNellis's answer doğrudur. this page altındaki gözlemlemek şey yapması görünen enable_shared_from_this
şablonun kendisi, not 7'nin açıklama gelince
açıklıyor:
... şablon
enable_shared_from_this
birweak_ptr
nesneyi tutar Bu, türetilmiş nesneyi işaret eder. tavuk ve yumurta problemi, ile ilgilishared_ptr
nesnesinin olmadığı zaman nesnesinin nasıl başlatılacağı ile ilgilidir. Uygulama hünershared_ptr
için kurucular hakkındaenable_shared_from_this
biliyoruz ve bir kamu temel sınıf olarakenable_shared_from_this
olan bir kaynağın sahibi birshared_ptr
nesne inşaatı sırasındaweak_ptr
nesneyi set olmasıdır.
Kavramsal olarak, shared_from_this()
this
bir shared_ptr
işaret alır ve bir kopyasını döndürür.
Kurucuda, this
işaret eden shared_ptr
yoktur.
- 1. Boş işaretçi istisna
- 2. Boş işaretçi istisnası
- 3. Cassandra json2sstable Boş İşaretçi İstisnası
- 4. Boş İşaretçi istisnası başlayan IntentService
- 5. Temel sınıflarında std :: enable_shared_from_this kullanma
- 6. enable_shared_from_this ve yığıntaki nesneler
- 7. ARC'de Zeroing Zayıf Referanslar
- 8. bir işaretçi boş olup olmadığını kontrol Boost.Test
- 9. Android TextView'un ve boş işaretçi istisna
- 10. Boş bir arabirim türü belirtecine işaretçi
- 11. Glassfish 4.1, JPA EntityManager Boş İşaretçi İstisnası
- 12. Zayıf referans
- 13. Java'da boş anonim iç sınıf
- 14. std :: enable_shared_from_this: destroctor'da shared_from_this() öğesini çağırmasına izin verilir mi?
- 15. tcpdf: zayıf görüntü kalitesi
- 16. Zayıf WebAPI performansı
- 17. Nginx neden zayıf?
- 18. zayıf mülkiyet kurulamaz
- 19. Zayıf Olayı Kullanma .NetCore
- 20. Bu zayıf kullanım mı?
- 21. C++ işaretçi ile işaretçi
- 22. İç Katıl, varsa, boş sütunlar oluşturun
- 23. İç int boş alan nasıl eklenir?
- 24. İşaretçi,
- 25. Google Koleksiyon ile Zayıf Multimedya Oluşturun
- 26. İşaretçi olmayan kendi türlerim için "boş gösterici optimizasyonu" kullanabilir miyim?
- 27. Javascript Form Yazısı Jersey MultiFormData - Boş İşaretçi İstisnası
- 28. Kişi nesnesini iliştirmeye çalışırken iletişim nesnesindeki boş işaretçi istisnası
- 29. Eylem için Geniş Görünümde Boş İşaretçi ÇubuğuBir arama
- 30. C++: İşaretçi işlevi işlevi işaretçi
Gerçekten bir kopya: http://stackoverflow.com/questions/4428023/enable-shared-from-this-c0x-what-am-i-doing-wrong –