मैं C ++ में एक साझा पॉइंटर के लिए एक एक्सेसर विधि लिख रहा हूं जो कुछ इस प्रकार है:
class Foo {
public:
return_type getBar() const {
return m_bar;
}
private:
boost::shared_ptr<Bar> m_bar;
}
तो getBar()
रिटर्न प्रकार के कॉन्स्ट-नेस का समर्थन करने के लिए ऐसा होना चाहिए boost::shared_ptr
जो Bar
इसे इंगित करने से रोकता है। मेरा अनुमान है कि shared_ptr<const Bar>
वह वह प्रकार है जो मैं उसे करने के लिए वापस जाना चाहता हूं, जबकि const shared_ptr<Bar>
पॉइंटर के पुन: असाइनमेंट को रोकने के लिए खुद को एक अलग इंगित करने के लिए रोकना होगा , Bar
लेकिन Bar
इसे संशोधित करने की अनुमति देता है ... हालांकि, मुझे यकीन नहीं है। मैं इसे सराहता हूँ अगर कोई व्यक्ति जो निश्चित रूप से जानता है वह इस बात की पुष्टि कर सकता है, या अगर मुझे यह गलत लगा तो मुझे सही कर सकता है। धन्यवाद!
const
सामान्य रूप से संशोधित क्या यह _precedes, तो T *const
एक है const
करने के लिए सूचक T
है, और T const*
करने के लिए एक सूचक है const
T
। और यह सबसे अच्छा है कि const
इसे पूर्ववर्ती कुछ भी नहीं के साथ उपयोग करने से बचें ।
T *const
और T const *
के बीच अंतर के रूप में ही है const shared_ptr<T>
औरshared_ptr<const T>
*
और->
इसकी पुष्टि कर सकते हैं।