2012-02-18 29 views
5

He creado un operador sobrecargado para ++ en mi archivo .hpp y luego una función que lo llama también en el archivo .hpp. El archivo .cpp llama a la función, pero cuando la función pulsa el código ++ no entra en el operador sobrecargado sino que usa el operador de operación predeterminado para ++. ¿Por qué no está usando mi operador sobrecargado?¿Por qué no está utilizando mi operador sobrecargado para ++?

Aquí es los operadores para ++:

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; 
    } 

Y aquí está la función usándolo:

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

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

Y, por último, la llamada de la función en el archivo .cpp

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

Respuesta

4

Sobrecarga el operador de incremento de prefijo ++ con un operador de función no miembro que tiene un argumento de clase escriba o una referencia al tipo de clase, o con un operador de función miembro que no tenga argumentos.

Parece que está utilizando operadores que no son miembros. Por lo tanto, su sintaxis debe ser void operator ++ (iterador &); // prefijo y void operator ++ (Square_List, int); //sufijo.

Cuestiones relacionadas