c++ - Assignment operator overloading -- error C2440: '==' : cannot convert from 'A *' to 'A *const ' -
निम्न कोड असाइनमेंट ऑपरेटर को अधिभार कैसे दिखाएं:
#include & lt; iostream & gt; नेमस्पेस एसटीडी का उपयोग करना; टेम्पलेट & lt; typename T & gt; वर्ग ए {सार्वजनिक: ए () {}; ए (टी एंड ओज) {value = obj;}; ~ ए () {}; टी मूल्य; टेम्पलेट & lt; typename E & gt; & Lt; टी & gt; & amp; ऑपरेटर = (ए एंड एलटी; ई & gt; एंड ओबीजे) {यदि (यह == एंड ओबीजे) रिटर्न * यह; मान = obj.value; वापसी * यह; }}; Int main () {int temp; Temp = 3; & Lt; पूर्णांक & gt; myobjects (अस्थायी); अदालत के & lt; & lt; myobjects.value & lt; & lt; endl; फ्लोट f_value; F_value = 10.7; & Lt; फ्लोट & gt; fobjects (f_value); Myobjects = फॉबजेस; अदालत के & lt; & lt; myobjects.value & lt; & lt; endl; वापसी 0; } हालांकि, जब मैं इसे वीसी 10 के साथ संकलित करता हूं, तो मुझे निम्नलिखित त्रुटि मिलती है:
त्रुटि c2440: '==': ' & lt; टी & gt; * 'ए' के लिए & lt; T & gt; * Const ' अगर मैं ओवरलोडिंग फ़ंक्शन को निम्नलिखित तरीके से बदलता हूं:
टेम्पलेट & lt; typename E & gt; & Lt; टी & gt; & amp; ऑपरेटर = (ए एंड एलटी; ई & gt; एंड ओबीजे) {// यदि (यह == & amp; obj) // वापसी * यह; मान = obj.value; वापसी * यह; } यह काम करेगा जब इस तरह से कॉल किए जाने वाले कोड में यह त्रुटि उत्पन्न होती है?
आप गायब हैं त्रुटि संदेश का हिस्सा इसे कहना चाहिए:
त्रुटि C2440: '==': 'ए & lt; T & gt; * '[टी = फ्लोट] से' ए & एलटी; टी & gt; * Const * [टी = इंट के साथ] आपको अतिरिक्त जानकारी देखने के लिए बिल्ड लॉग में पास की रेखाओं को देखना होगा। और संकलक दो बार T का उपयोग करके कोई दोहरा नहीं कर रहा है, लेकिन दो अलग-अलग प्रकारों का प्रतिनिधित्व करता है।
Comments
Post a Comment