c++ - Overload an operator twice -


इस सवाल का पहले से ही एक उत्तर है: < / P>

  • 8 जवाब

    यह वही अधिभार संभव है ऑपरेटर को सी ++ पर दो बार?

    जब मैं एक प्रकार के रूप में वापसी प्रकार का उपयोग करके ऑपरेटर को ओवरलोड करने का प्रयास करता हूं, तो कंपाइलर मुझे एक त्रुटि दिखाता है।

      bigint.h: 41 : 9: त्रुटि: एक स्टड :: स्ट्रिंग बिगइंट :: ऑपरेटर + (बिगइंंट) एक ???? अतिभारित नहीं हो सकता bigint.h: 40: 9: त्रुटि: बिगइंट बिगइंट :: ऑपरेटर + (बिगइंंट) के साथ :?   

    यह मेरा कोड है:

    .h:

      बिगइंत ऑपरेटर + (बिगइंंट); स्ट्रिंग ऑपरेटर + (बिगइंंट);   

    .cc:

      बिगइंत बिगइंट :: ऑपरेटर + (बिगइंट एम) {if (this-> ;.s.size ()! = M. नंबर.size ()) तयलेैम्बन (यह- & gt; संख्या, एम.एनम्बर); // कॉल योग; यह- & gt; संख्या = योग (यह- & gt; संख्या, एम। संख्या); वापसी (* यह); } स्ट्रिंग बिगइंट :: ऑपरेटर + (बिगइंट एम) {// कॉल बिगइंट अधिभार +; }   

    संपादित करें: जाहिरा तौर पर मैं एक ही ऑपरेटर को एक आधार के रूप में दो प्रकार की वापसी प्रकार का उपयोग नहीं कर सकता। सुझाव:

    जैसा कि बताया गया है, आप अकेले वापसी प्रकार पर अधिभार नहीं बढ़ा सकते हैं। तो यह ठीक है:

      फ़ू ऑपरेटर + (कॉन्स्ट फू एंड कंस्ट्र फू एंड amp); फू ऑपरेटर + (कॉन्स्ट चार *, डबल);   

    लेकिन यह नहीं है:

      फ़ू ऑपरेटर + (कॉन्स्ट फू एंड कंस्ट्र फू एंड amp); बार ऑपरेटर + (कॉन्स्ट फू एंड कंस्ट्र फू एंड amp);   

    लेकिन अधिकांश समय किसी समस्या के लिए वैध और सरल समाधान हैं। उदाहरण के लिए, आपके जैसी स्थिति में, जहां आप निम्न कार्य करना चाहते हैं:

      फू ए, बी; फू सी = ए + बी; बार बार = ए + बी;   

    फिर एक आम रणनीति बार एक अंतर्निहित कनवर्टर कन्स्ट्रक्टर देना है:

      struct बार {बार (कॉन्स्ट फू & amp; Foo) {....}};   

    या फ़ू एक रूपांतरण ऑपरेटर दें:

      struct Foo {स्पष्ट ऑपरेटर बार () {....}। ...};   

    ध्यान दें कि आप ऑपरेटर स्पष्ट को चिह्नित नहीं कर सकते हैं यदि आपके पास कोई C ++ 11 कंपाइलर नहीं है।

Comments

Popular posts from this blog

Java - Error: no suitable method found for add(int, java.lang.String) -

java - JPA TypedQuery: Parameter value element did not match expected type -

c++ - static template member variable has internal linkage but is not defined -