cppreference.com के अनुसार, std::shared_ptr
सापेक्ष ऑपरेटरों (==,! =, <, ...) का पूरा सेट प्रदान करता है, लेकिन तुलना के अर्थशास्त्र निर्दिष्ट नहीं हैं। मुझे लगता है कि वे अंतर्निहित कच्चे पॉइंटर्स को संदर्भित वस्तुओं से तुलना करते हैं, और वह std :: weak_ptr और std :: unique_ptr वही करता है।क्या यह सी ++ 11 स्मार्ट पॉइंटर्स से प्राप्त करने के लिए ठीक है और रिश्तेदार ऑपरेटरों को ओवरराइड करता है?
कुछ उद्देश्यों के लिए, मैं रिश्तेदार ऑपरेटरों को पसंद करना चाहूंगा जो संदर्भित ऑब्जेक्ट्स (पॉइंटर्स के बजाए) की तुलना में स्मार्ट पॉइंटर्स को ऑर्डर करें। यह पहले से ही कुछ है जो मैं बहुत करता हूं, लेकिन अपने स्वयं के "गूंगा पॉइंटर्स" के साथ जो रिश्तेदार ऑपरेटरों को छोड़कर कच्चे पॉइंटर्स की तरह व्यवहार करते हैं। मैं मानक सी ++ 11 स्मार्ट पॉइंटर्स के साथ भी वही काम करना चाहता हूं। तो ...
यह सी ++ 11 स्मार्ट संकेत (shared_ptr, weak_ptr और unique_ptr) से विरासत के लिए और रिश्तेदार ऑपरेटरों को ओवरराइड ठीक है?
क्या कोई स्नीकी समस्या है जिसके लिए मुझे देखने की ज़रूरत है? उदाहरण के लिए, क्या चीजों को सही ढंग से काम करने के लिए
using
लागू करने या उपयोग करने के लिए मुझे कोई अन्य विधियां हैं?आलस्य में अंतिम के लिए, क्या एक लाइब्रेरी टेम्पलेट उपलब्ध है जो मेरे लिए यह स्वचालित रूप से करेगा?
मुझे आशा है कि यह एक "निश्चित रूप से आप ऐसा कर सकते हैं, मूर्ख!" चीज की तरह, लेकिन मैं थोड़ा अनिश्चित हूं क्योंकि मानक पुस्तकालय में कुछ कक्षाएं हैं (कम से कम std::map
जैसे कंटेनर) जिन्हें आप से प्राप्त नहीं किया जाना चाहिए।
सामान्य रूप से, यह किसी भी चीज से उत्तराधिकारी नहीं है जो विनाशक गतिशील नहीं है। यह सामान्य रूप से किया जा सकता है और _is_ किया जाता है, आपको सिर्फ _really_ सावधान रहना होगा। –
@ म्यूइंग डक - ठीक है, कोई देर से बाध्यकारी नहीं है, जो विनाशक और अन्य जगहों के लिए एक समस्या हो सकती है - समझ में आता है। मुझे नहीं लगता कि यह मेरे लिए एक मुद्दा है, कम से कम इस समय, लेकिन मुझे जांच करनी होगी। संभवत: उत्तराधिकारी के बजाय एक सदस्य के रूप में एक स्मार्ट सूचक को लपेटना बेहतर होगा। – Steve314
एर, "गतिशील" द्वारा, मेरा मतलब है "वर्चुअल" –