2012-02-18 14 views
5

मैंने अपनी .hpp फ़ाइल में ++ के लिए ओवरलोडेड ऑपरेटर बनाया है और फिर एक फ़ंक्शन जो इसे .hpp फ़ाइल में भी कॉल करता है। .cpp फ़ाइल तब फ़ंक्शन को कॉल करती है लेकिन जब फ़ंक्शन ++ कोड पर जाता है तो यह अधिभारित ऑपरेटर को एंटर नहीं करता है बल्कि इसके बजाय ++ के लिए डिफ़ॉल्ट ऑपरेशन ऑपरेटर का उपयोग करता है। यह मेरे अधिभारित ऑपरेटर का उपयोग क्यों नहीं कर रहा है?यह ++ के लिए मेरे अधिभारित ऑपरेटर का उपयोग क्यों नहीं कर रहा है?

यहाँ ++ के लिए ऑपरेटरों है: यहाँ

iterator& operator ++() { // pre-increment 
     std::list<value_type>::iterator i = listOfValues.begin(); 
     advance(i,1); 
     return &*i; 
    } 

    Square_List operator ++ (int) { // post-increment 
     std::list<value_type>::iterator i = listOfValues.begin(); 
     advance(i,1); 
     return &*i; 
    } 

और समारोह में यह उपयोग कर रहा है:

template <typename A_> 
void testerIncrement(A_ toInc) 
{ 

    toInc = listOfValues.begin(); 
    cout << "\n" << *toInc; 
    ++toInc; 
    cout << "\n" << *toInc; 
    ++toInc; 
} 

और अंत में .cpp फ़ाइल में समारोह के लिए कॉल

ca.testerIncrement(ca.listOfValues.begin()); 

उत्तर

4

आप उपसर्ग वृद्धि ऑपरेटर ++ को एक गैर-सदस्य फ़ंक्शन ऑपरेटर के साथ अधिभारित करते हैं जिसमें कक्षा का एक तर्क है प्रकार या वर्ग प्रकार का संदर्भ, या एक सदस्य फ़ंक्शन ऑपरेटर के साथ जिसमें कोई तर्क नहीं है।

ऐसा लगता है कि आप गैर सदस्य ऑपरेटरों का उपयोग कर रहे हैं। तो आपका वाक्यविन्यास शून्य ऑपरेटर ++ होना चाहिए (iterator &); // उपसर्ग और शून्य ऑपरेटर ++ (स्क्वायर_लिस्ट, int); // पोस्टफ़िक्स।