2012-11-12 16 views
9

ऐसा लगता है कि कमजोर_पीआरआर वैध ऑब्जेक्ट को इंगित कर रहा है या नहीं, यह देखने के लिए एक अस्थायी shared_ptr बनाना है। मैं वस्तु को भी एक्सेस नहीं करना चाहता हूं। ऐसा इसलिए है क्योंकि मेरे पास एक ऐसा फ़ंक्शन है जो shared_ptr के वेक्टर से कमजोर_पीआरआर देता है और यदि यह खाली कमजोर_पीआरआर देता है तो इसका मतलब है कि ऑब्जेक्ट पहले से ही उस GUID के साथ मौजूद नहीं है।क्या मुझे कमजोर_ptr.lock() का उपयोग करने के लिए सिर्फ यह जांचने के लिए है कि क्या यह वैध ऑब्जेक्ट को इंगित करता है?

तो यदि कोई ऑब्जेक्ट मौजूद है तो मैं बस परीक्षण कर रहा हूं।

क्या कोई और तरीका यह देखने के लिए है कि क्या weak_ptr को साझा किए बिना कमजोर_प्टर खाली है या खाली नहीं है?

+0

आप लॉक() – imreal

+0

का उपयोग कर सकते हैं आप पहली जगह कमजोर सूचक कैसे प्राप्त करते हैं? _That's_ इंटरफ़ेस जिसे बदलना है। –

+1

लॉक() एक shared_ptr देता है इसलिए मैंने यह पोस्ट किया है। – EddieV223

उत्तर

20

आप expired() सदस्य फ़ंक्शन का उपयोग कर सकते हैं।

+1

'use_count' भी। – Pubby

+4

@ पब्बी: अगर मैं (someVecor.size() == 0) 'if (someVector.empty()) 'over' का उपयोग करना पसंद करता हूं। इसी कारण से मैं इस मामले में 'समाप्त हो गया' पसंद करता हूं। अधिक स्पष्ट –

+0

मुझे माइक्रोसॉफ्ट प्रलेखन का उपयोग करने से नफरत है जब तक यह माइक्रोसॉफ़्ट विशिष्ट कार्य या प्रश्न न हो। बेहतर होगा http://en.cppreference.com/w/cpp/memory/weak_ptr/expired –