मैंने कुछ नए कोड में कुछ const
शुद्धता (वास्तव में कार्यात्मक प्रतिमान) शुरू करने की कोशिश की और पाया कि मैं की अपेक्षा रखने वाले फ़ंक्शन में पास नहीं कर सकता। ध्यान दें कि मैं स्थिरता को डालना नहीं चाहता हूं लेकिन इसे पेश करता हूं, जो कच्चे पॉइंटर्स के साथ कानूनी है।साझा_ptr <A> क्यों साझा नहीं किया गया है shared_ptr <A const> में?
क्या इसके आसपास जाने का कोई तरीका है? ऐसा करने के लिए मुझे सदस्य-फ़ंक्शन नहीं मिला।
सटीक जी ++ 4.6.1 ने बोला त्रुटि है:
error: no matching function for call to ‘foo(std::shared_ptr<A>)’
note: candidate is:
note: template<class T> std::shared_ptr<_Tp> foo(std::shared_ptr<const _Tp>)
'std :: static_pointer_cast (पी)' एक और है स्पष्ट रूप से रूपांतरण करने का तरीका। –
@Luc: क्यों नहीं 'std :: const_pointer_cast (पी) '? –
Xeo
@Xeo क्योंकि हम सीवी-क्वालीफायर को नहीं हटा रहे हैं। –