कॉन्स्ट ऑब्जेक्ट को 'इस' तर्क के रूप में पास करना: क्वालीफायर अयोग्यता त्रुटि
सी में, सदस्य कार्यों के लिए कॉन्स्ट ऑब्जेक्ट को 'इस' तर्क के रूप में पास करना इसके परिणामस्वरूप "const xxx' को सदस्य फ़ंक्शन के 'इस' तर्क के रूप में पास करने से क्वालिफायर खारिज हो जाते हैं" त्रुटियां हो सकती हैं। ऐसा इसलिए होता है क्योंकि कंपाइलर इस संभावना पर विचार करता है कि गैर-कॉन्स्ट सदस्य फ़ंक्शन ऑब्जेक्ट को संशोधित कर सकते हैं, जो कॉन्स्ट ऑब्जेक्ट्स के लिए निषिद्ध है।
समस्या विश्लेषण
प्रदान किए गए कोड में , सेट में ऑब्जेक्ट को कॉन्स्ट स्टूडेंट टी के रूप में संग्रहीत किया जाता है। लूप के भीतर सदस्य फ़ंक्शन getId() और getName() तक पहुंचने पर, कंपाइलर इस समस्या का पता लगाता है क्योंकि ऑब्जेक्ट स्थिरांक हैं और सदस्य फ़ंक्शन स्थिरांक के रूप में चिह्नित नहीं हैं।
Solution
त्रुटि को हल करने के लिए, getId() और getName() फ़ंक्शन को const बनाया जाना चाहिए:
int getId() const { return id; } string getName() const { return name; }
यह कॉन्स्ट नियमों का उल्लंघन किए बिना कॉन्स्ट ऑब्जेक्ट पर फ़ंक्शन को कॉल करने की अनुमति देता है।
अतिरिक्त नोट्स
inline bool operator
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3