मेरे पास shared_ptr<Type> t(makeSomething(), mem_fun(&Type::deleteMe))
जैसा कुछ है अब मुझे सी स्टाइल फ़ंक्शन को कॉल करने की आवश्यकता है जिसके लिए Type
पर पॉइंटर की आवश्यकता है। मैं इसे shared_ptr
से कैसे प्राप्त करूं? - अन्यथा खराबी हो सकती थी, क्योंकि पुस्तकालय करने के लिए कोशिश कर सकते हैंshare_ptr से सामान्य पीआरआर प्राप्त कर रहा है?
boost::shared_ptr<foo> foo_ptr(new foo());
foo *raw_foo = foo_ptr.get();
c_library_function(raw_foo);
सुनिश्चित करें कि आपके shared_ptr
क्षेत्र से बाहर जाने नहीं करता पुस्तकालय समारोह इसके साथ किया जाता है से पहले करें:
आपको शायद c_library_function ने raw_foo के साथ अपनी चीज पूरी करने से पहले साझा_ptr को दायरे से बाहर जाने के बारे में कुछ नोट करना चाहिए। – falstro
रो: मुझे इसके बारे में पता है, मुझे बस पाने के बारे में जानने की जरूरत है :)। धन्यवाद एडम! : डी –
हाय @ एडम रोसेनफील्ड, क्या आप समझा सकते हैं कि परिदृश्य में क्या होता है जहां 'c_library_function' के अंदर कोई अपवाद होता है। इसका मतलब है कि raw_foo लटका दिया गया है? या foo_ptr आगे बढ़ता है और raw_foo को हटा देता है, क्योंकि raw_foo foo_ptr द्वारा आयोजित किया जाता है? – thassan