8

因为我已经operator++为迭代器类重载了

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

但是当我尝试做

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

我收到关于没有 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 回答