boost::intrusive_ptr
को intrusive_ptr_add_ref
और intrusive_ptr_release
परिभाषित करने की आवश्यकता है। एक बेस क्लास क्यों प्रदान नहीं किया जाता है जो यह करेगा? यहां एक उदाहरण दिया गया है: http://lists.boost.org/Archives/boost/2004/06/66957.php, लेकिन पोस्टर कहता है "मुझे जरूरी नहीं लगता कि यह एक अच्छा विचार है"। क्यों नहीं?intrusive_ptr: एक सामान्य आधार वर्ग क्यों प्रदान नहीं किया जाता है?
अपडेट: मुझे नहीं लगता कि इस वर्ग का एकाधिक विरासत के साथ दुरुपयोग किया जा सकता है। किसी भी वर्ग जो कई आधार वर्गों से प्राप्त होती है, उनके संदर्भ संख्या के साथ एक ही समस्या होगी। चाहे इन रिफ्रेंस को बेस क्लास के माध्यम से लागू किया गया हो या कोई फर्क नहीं पड़ता।
मुझे नहीं लगता कि मल्टीथ्रेडिंग के साथ कोई समस्या है; boost::shared_ptr
परमाणु संदर्भ गिनती प्रदान करता है और यह वर्ग भी हो सकता है।
एक संबंधित नोट, 'OSG :: OpenSceneGraph पुस्तकालय से ref_ptr' पर एक शीर्ष स्तर आम आधार वर्ग (का उपयोग करता है 'osg :: संदर्भित') इसके घुसपैठ स्मार्ट सूचक कार्यान्वयन के लिए। –
और osg :: संदर्भित :: boostusive_ptr के साथ संगत है क्योंकि यह intrusive_ptr_add_ref() और intrusive_ptr_release() फ़ंक्शंस प्रदान करता है। अच्छी तरह से काम। –