8

क्योंकि मैं operator++ अतिभारित किया है पुनरावर्तक वर्गऑपरेटर ++ के उपसर्ग और पोस्टफिक्स रूपों के बीच (ओवरलोडिंग) को अलग करने के लिए कैसे? (C++)

template<typename T> 
typename list<T>::iterator& list<T>::iterator::operator++() 
{ 
    //stuff 
} 

लेकिन जब मैं

list<int>::iterator IT; 
IT++; 

करने की कोशिश मैं वहाँ कोई postifx ++ जा रहा है, उपसर्ग प्रपत्र का उपयोग कर के बारे में एक चेतावनी मिल के लिए । मैं विशेष रूप से उपसर्ग/postifx रूपों को अधिभार कैसे कर सकता हूं?

उत्तर

12

उसी ऑपरेटर ओवरलोड का एक संस्करण लिखें, लेकिन इसे int टाइप करें। आपको उस पैरामीटर के मूल्य के साथ कुछ भी करने की ज़रूरत नहीं है।

यदि आप इस वाक्यविन्यास को कैसे पहुंचाते हैं, तो कुछ इतिहास में रुचि रखते हैं, there's a snippet of it here

20

http://www.devx.com/tips/Tip/12515

class Date { 
    //... 
    public: 
    Date& operator++(); //prefix 
    Date& operator--(); //prefix 
    Date operator++(int unused); //postfix 
    Date operator--(int unused); //postfix 
}; 
+5

पोस्टफिक्स ऑपरेटरों, मूल्य से लौट जाना संदर्भित नहीं के बारे में सब कुछ। मुझे लगता है कि बहुत अजीब परिस्थितियां हो सकती हैं जहां वे एक संदर्भ वापस कर सकते हैं, लेकिन क्या करना है? ऐसा नहीं है, क्योंकि यह बढ़ी है ... –

8

पोस्टफिक्स हस्ताक्षर में एक पूर्णांक तर्क है।

Class& operator++(); //Prefix 
Class operator++(int); //Postfix 
संबंधित मुद्दे