Как отличить (при перегрузке) между префиксными и постфиксными формами оператора ++? (С++)

Потому что я перегрузил operator++ для класса итератора

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

Но когда я пытаюсь сделать

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

Я получаю предупреждение о том, что не существует postifx ++, используя форму префикса. Как я могу специально перегрузить формы префикса/postifx?

+8
источник поделиться
4 ответа

Напишите версию той же самой перегрузки оператора, но дайте ей параметр типа int. Вам не нужно ничего делать с этим значением параметра.

Если вам интересна какая-то история о том, как был получен этот синтаксис, там есть фрагмент этого файла.

+12
источник

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
};
+20
источник
другие ответы

Связанные вопросы


Похожие вопросы

Postfix имеет аргумент int в сигнатуре.

Class& operator++();    //Prefix 
Class  operator++(int); //Postfix 
+8
источник

все о операторе перегрузка http://www.parashift.com/c++-faq-lite/operator-overloading.html

-1
источник

Посмотрите другие вопросы по меткам или Задайте вопрос