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

のPostfix事業者が参照、値ではない返す必要があります演算子オーバーロード についてのすべて。彼らは参照を返すことができる非常に奇妙な状況があるかもしれないと思うが、何に?それは増分されているので、これはありません... –

8

Postfixは署名のint引数を有します。

Class& operator++(); //Prefix 
Class operator++(int); //Postfix 
関連する問題