मान लें कि मेरे पास कक्षा है।क्या मैं किसी ऑब्जेक्ट को shared_ptr में रीसेट करने के लिए प्लेसमेंट नया उपयोग कर सकता हूं?
class BigData {...};
typedef boost::shared_ptr<BigData> BigDataPtr;
तो मैं कार्य करें:
BigDataPtr bigDataPtr(new BigData());
बाद में के बाद मैं अपने वस्तु के साथ किया हूँ और मैं वहाँ यकीन है कि वस्तु के लिए कोई अन्य उपयोगकर्ताओं कर रहा हूँ।
bigDataPtr->~BigDataPtr();
new (&*bigDataPtr) BigData;
यह मेरे किसी भी अतिरिक्त आवंटन के बिना वस्तु रीसेट करते हैं:
यह निम्न करने के लिए सुरक्षित है?
'bigDataPtr = BigData(); 'के साथ क्या गलत है? – jrok
काफी समान प्रश्न है, लेकिन मैं के रूप में डुप्लिकेट पर विचार नहीं करते: http://stackoverflow.com/questions/1124634/c-call-destructor-and-then-constructor-resetting-an-object – PiotrNycz
आपका मतलब है 'bigDataPtr-> ~ BigData(); '? साथ ही, 'BigData' के लिए बस कुछ' रीसेट 'विधि क्यों न प्रदान करें? – zch