因为我为迭代器类重载了operator++
template<typename T>
typename list<T>::iterator& list<T>::iterator::operator++()
{
//stuff
}
但是当我尝试做的时候
list<int>::iterator IT;
IT++;
我使用前缀形式警告没有postifx ++
。我怎样才能专门重载前缀/ postifx表单?
答案 0 :(得分: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
};
答案 1 :(得分:12)
编写相同运算符重载的版本,但为其指定类型为int
的参数。您不必对该参数的值执行任何操作。
如果您对此语法的一些历史记录感兴趣,there's a snippet of it here。
答案 2 :(得分:8)
Postfix在签名中有一个int参数。
Class& operator++(); //Prefix
Class operator++(int); //Postfix
答案 3 :(得分:-1)