2012-02-18 8 views
5

Ho creato un operatore sovraccarico per ++ nel mio file .hpp e quindi una funzione che lo chiama anche nel file .hpp. Il file .cpp chiama quindi la funzione, ma quando la funzione colpisce il codice ++ non eneter l'operatore sovraccarico ma invece usa l'operatore di operazione predefinito per ++. Perché non sta usando il mio operatore sovraccarico?Perché non usa il mio operatore sovraccarico per ++?

Ecco gli operatori di ++:

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

E qui sta la funzione usandolo:

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

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

E infine il richiamo della funzione nel file cpp

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

risposta

4

Sovraccarico dell'operatore di incremento del prefisso ++ con un operatore di funzione non membro con un argomento di classe digitare o un riferimento al tipo di classe o con un operatore di funzione membro che non ha argomenti.

Sembra che si stia utilizzando operatori non membri. Quindi la sintassi dovrebbe essere void operator ++ (iteratore &); // prefisso e void operator ++ (Square_List, int); // postfix.

Problemi correlati