यह सफलतापूर्वक इस तरह से सामान के साथ काम करता है: (ए == सी) सच है। एक और वर्ग है - कतार की तरह लेकिन इसे अन्य तत्वों के समानता के लिए नया धक्का दिया तत्व ( इसलिए, अब एक समस्या है असल में, मुझे समझ में नहीं आ रहा है कि क्यों UPD: और मैं आपके पास एक Const होना चाहिए या, बेहतर, आपका यदि आप wComplex के सदस्य चर तक पहुंच नहीं चाहते हैं, तो आपको ऑपरेटर एक मित्र फ़ंक्शन: संपादित करें: अपडेट किए गए प्रश्न पर: आप मुझे लगता है आपको "क्यूई" वर्ग बनाने की आवश्यकता होती है जो "नोड" वर्ग के उदाहरणों का प्रबंधन करती है - एक कंटेनर को गठबंधन करने की कोशिश कर रहा है और निहित तत्व वास्तव में एक अच्छा विचार नहीं है इसके अलावा, मानक लाइब्रेरी कंटेनरों का उत्तराधिकार शायद ही कभी अच्छा है विचार। यदि आप
#ifndef WCOMPLEX_H # परिभाषित WCOMPLEX_H # शामिल & lt; stdio.h & gt; // अजीब ``==` ऑपरेटर वर्ग wComplex के साथ जटिल-जैसी संख्याओं का नमूना वर्ग {निजी: डबल असली पार्ट; डबल इमेजपार्ट; सार्वजनिक: wComplex (); WComplex (डबल आर); WComplex (डबल आर, डबल आई); बूल ऑपरेटर == (wComplex & amp;); शून्य प्रिंट (); }; WComplex :: wComplex () {realPart = 0; ImagePart = 0; } WComplex :: wComplex (डबल आर) {realPart = R; ImagePart = 0; } WComplex :: wComplex (डबल आर, डबल आई) {realPart = R; ImagePart = I; } Bool wComplex :: ऑपरेटर == (wComplex & amp; एएल) {डबल diff = realPart * realPart + imagePart * imagePart - एल। रियलपेर्ट * एल। रियलपार्ट - एल। आईमेजपार्ट * एल। आईजेजपार्ट; वापसी (diff == 0); } शून्य wComplex :: प्रिंट () {printf ("(% g) + (% g) मैं \ n", realpart, imagepart); } #endif
wComplex A (1, 2); WComplex B (2, 4); WComplex सी (2, 1);
== अर्थ में) को नियंत्रित करना चाहिए।
#ifndef MYQueue_H #define MYQueue_H #include & lt; stdio.h & gt ; #include & lt; queue & gt; टेम्पलेट & lt; typename T & gt; वर्ग myQueue: सार्वजनिक std :: queue & lt; T & gt; {सार्वजनिक: myQueue () {printf ("नया myQueue सफलतापूर्वक बनाया गया \ n"); } शून्य पुश (const T & amp; x) {myQueue * tmp = new myQueue; MyQueue * old = नया myQueue; पुरानी = यह; Bool MATCH = false; जबकि (! पुराना- gt; खाली ()) {टी एल = पुराना-> सामने (); If (el == x) {MATCH = true; tmp- & gt; धक्का (x); } अन्य टीएमपी- & gt; पुश (एल); old- & gt; पॉप (); } अगर (! मैट) टीएमपी- & gt; पुश (एक्स); यह = * टीएमपी; टीएमपी हटाना; पुराने हटाएं; }}; #endif
myqueue.h: सदस्य फ़ंक्शन में "myoid" शून्य <टी> (Const T & amp;) [टी = wComplex] के साथ: ????: shit.cpp: 23: यहां से शुरू किया गया myqueue.h: 26: त्रुटि: एक ऑपरेटर के लिए कोई मेल नहीं है == एक ???? में एक ???? एल == xâ ???? Wcomplex.h: 36: नोट: उम्मीदवार हैं: bool wComplex :: ऑपरेटर == (wComplex & amp;) myqueue.h: 36: त्रुटि: अपेक्षित काम के बाएं प्रचालन के रूप में आवश्यक: *** [संकलन] त्रुटि 1
कोई भी मेल ऑपरेटर == ??? में एक ?? एल == xâ और मुझे क्या करना चाहिए? कोई भी विचार
यह तत्व
tmp से कैसे बदल सकता हूँ?
यह = * tmp;
T के संदर्भ में
पुश () परन्तु आपका
ऑपरेटर == केवल गैर-संप्रदाय संदर्भ स्वीकार करता है।
bool wComplex :: ऑपरेटर == (wComplex & amp; एल)
bool wComplex :: ऑपरेटर == ( WComplex const & amp; एल) const
ऑपरेटर == एक निशुल्क कार्य होना चाहिए:
bool ऑपरेटर == (wComplex const & amp; वाम, wComplex const & amp; amp; राइट) {}
वर्ग wComplex {... दोस्त बूल ऑपरेटर == (wComplex const & amp; बाएं, wComplex const & amp; amp; अधिकार); ...};
यह को असाइन नहीं कर सकते।
यह प्रकार का है
T * const - चूंकि यह इसे संशोधित करने का मतलब नहीं होगा। आप जो करने की कोशिश कर रहे हैं वह बाहरी चर को बदलने के लिए है जो वर्तमान वर्ग को इंगित करता है, आप ऐसा नहीं कर सकते वर्ग वर्ग के भीतर के कार्य से, जब तक यह बाहरी चर एक तर्क के रूप में पारित नहीं किया जाता है।
std :: queue का उपयोग करना चाहते हैं तो एक सदस्य चर बनायें।
Comments
Post a Comment