8

operator++イテレータクラスのをオーバーロードしたため

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

しかし、私がやろうとすると

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

++プレフィックス形式を使用して、postifxがないという警告が表示されます。どうすればprefix/postifxフォームを具体的にオーバーロードできますか?

4

4 に答える 4

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
};
于 2009-05-21T19:56:32.190 に答える
12

同じ演算子オーバーロードのバージョンを記述しますが、タイプのパラメーターを指定しますint。そのパラメータの値で何もする必要はありません。

この構文がどのように作成されたかの履歴に興味がある場合は、ここにそのスニペットがあります

于 2009-05-21T19:56:12.520 に答える
8

Postfixの署名にはint引数があります。

Class& operator++();    //Prefix 
Class  operator++(int); //Postfix 
于 2009-05-21T19:57:13.080 に答える
-1

演算子のオーバーロードに関するすべて http://www.parashift.com/c++-faq-lite/operator-overloading.html

于 2011-08-22T15:28:39.883 に答える