मैंने दो वर्गों, एक कॉन्स और एक गैर-कॉन्स के साथ एक कक्षा बनाई है। कॉन्स विधि सार्वजनिक है, इसलिए उपयोगकर्ता वेक्टर से पूछ सकते हैं। गैर-कॉन्स्ट विधि सुरक्षित है, इसलिए मैं इसे आवश्यक डेटा को संशोधित करने के लिए इसका उपयोग कर सकता हूं।जब कोई कॉन्स्ट विधि सार्वजनिक होती है और गैर-कॉन्स्टेंस संरक्षित होता है तो सी ++ क्यों नहीं खड़ा होता है?
जब मैं कक्षा का उपयोग करने की कोशिश करता हूं, और प्राप्त विधि को कॉल करता हूं, तो संकलक शिकायत करता है कि गैर-कॉन्स्ट विधि सुरक्षित है। इसके बजाय, मुझे ऑब्जेक्ट को कॉस्ट करने के लिए const_cast का उपयोग करना होगा, इसलिए मैं इसके बजाय सार्वजनिक विधि प्राप्त कर सकता हूं।
क्या इसे हल करने का कोई तरीका है? एक सार्वजनिक विधि क्यों है, इसलिए संकलक स्वयं कास्ट क्यों नहीं करेगा? अगर मैं संरक्षित संस्करण को हटा देता हूं और केवल एक को छोड़ देता हूं, तो यह ठीक काम करता है, इसलिए यह इस स्थिति में कलाकार करता है। कॉन्स को कास्टिंग हमेशा सुरक्षित है। यह एक समस्या है जो स्थिरता को हटा रहा है।