c++ - Why can't operator!= do the conversion? -
मेरे पास त्रुटि के साथ कोड है:
(Visual Studio त्रुटि:) त्रुटि 5 त्रुटि C2678: बाइनरी '! =': कोई ऑपरेटर नहीं मिला जो एक बाएं हाथ के ऑपरेंड प्रकार '`नोड' (या कोई स्वीकार्य रूपांतरण नहीं है)
टेम्पलेट & lt; class सी, कक्षा टी & gt; सी खोज 2 (सी पहले, सी पिछले, टी सी) {// जबकि (पहले! = अंतिम & amp;; पहला! = सी) {++ पहले; } पहले लौटना; } संरचना नोड {नोड (इंट ए, नोड * ख): वाल (ए), अगला (बी) {}; इंट वैल; नोड * अगला; }; टेम्पलेट & lt; कक्षा T & gt; Struct नोड_ड्रोप {T * ptr; नोड_वापर (टी * पी = 0): पीटीआर (पी) {} नोड & amp; ऑपरेटर * () कॉन्स्ट {रिटर्न * पीटीआर}} नोड * ऑपरेटर- & gt; () कॉन्स्ट {रिटर्न पीटीआर}} नोड_वापर & amp; ऑपरेटर ++ () {ptr = ptr- & gt; अगला; वापसी * यह;} नोड_वापर ऑपरेटर ++ (इंट) {नोड_वापर टीएमपी = * यह; ++ * इस; रिटर्न टीएमपी;} बूल ऑपरेटर == (कॉन्स्ट न्यूड_वापर & amp; i) const {रिटर्न ptr == i.ptr;} bool ऑपरेटर! = (कंसल्ट नोड_वापर & amp; i) const {return ptr! = I.ptr;}}; बूल ऑपरेटर == (कॉन्स्ट नोड एंड नोड, इंट एन) {return node.val == n; } Int main () {नोड * नोड 1 = नया नोड (3, नल); नोड * नोड 2 = नया नोड (4, नल); नोड 1- & gt; अगले = नोड 2; खोज 2 (नोड_वाप & लेफ्टिनेंट; नोड & gt; (नोड 1), नोड_वापर & lt; नोड & gt; (), 3)); नोड 1 हटाना; नोड 2 हटाना; वापसी 0; }
इस कोड में क्या गलत है?
आप प्रयास कर रहे हैं
नोड से
int के साथ तुलना करने के लिए (यह
find2 में किया जाता है जब
* first! = C )।
जब आप
नोड के साथ
int की तुलना करने के लिए
ऑपरेटर == प्रदान करते हैं, तो आपके पास नहीं है ऐसा करने के लिए एक
ऑपरेटर! प्रदान किया गया यदि आप एक जोड़ते हैं, तो यह काम करना चाहिए।
Comments
Post a Comment