Почему он не использует мой перегруженный оператор для ++? - PullRequest
5 голосов
/ 18 февраля 2012

Я создал перегруженный оператор для ++ в моем файле .hpp, а затем функцию, которая вызывает его также в файле .hpp. Файл .cpp затем вызывает функцию, но когда функция попадает в код ++, она не входит в перегруженный оператор, а вместо этого использует оператор операции по умолчанию для ++. Почему он не использует мой перегруженный оператор?

Вот операторы для ++:

iterator& operator ++ () {  // pre-increment
        std::list<value_type>::iterator i = listOfValues.begin();
        advance(i,1);
        return &*i;
    }

    Square_List operator ++ (int) { // post-increment
        std::list<value_type>::iterator i = listOfValues.begin();
        advance(i,1);
        return &*i;
    }

А вот функция, использующая его:

template <typename A_>
void testerIncrement(A_ toInc)
{

    toInc = listOfValues.begin();
    cout << "\n" << *toInc;
    ++toInc;
    cout << "\n" << *toInc;
    ++toInc;
}

И, наконец, вызов функции в файле .cpp

ca.testerIncrement(ca.listOfValues.begin());

1 Ответ

4 голосов
/ 18 февраля 2012

Оператор приращения префикса ++ перегружается либо оператором функции, не являющейся членом, который имеет один аргумент типа класса, либо ссылкой на тип класса, либо оператором функции-члена, который не имеет аргументов.

Кажется, вы используете операторы, не являющиеся членами. Так что ваш синтаксис должен быть оператор void ++ (итератор &); //префикс и оператор void ++ (Square_List, int); //postfix.

...