Problema definizione funzione

di il
2 risposte

Problema definizione funzione

Ciao a tutti e buon ferragosto
Posto perchè avrei bisogno di interpretare una strana sintassi (strana per me ovviamente) che ho incontrato mentre sto cercando di decifrare un codice c++ non mio.

Sono all'interno della mia classe abc.cc e le funzioni (praticamente tutte) sono così definite
void abc::operator ()(tipo* a) {
	int c;
	c = a + ....
	........
}
Perchè la funzione operator ha 4 parentesi tonde?

ovviamente non c'è una funzione
qualcosa abc::operator(){
....
return qualcosa;
}
Spero si capisca il mio dilemma. Aiutatemi con qualche input vi prego perchè attualmente sono così in difficoltà che non so neppure come chiedere aiuto a google o cosa andarmi a studiare.

Grazie

2 Risposte

  • Re: Problema definizione funzione

    
    operator() 
    
    indica che quello di cui si fa l'overload è l'operatore () mentre le altre sono le normali parentesi per il passaggio di argomenti.

    In modo analogo è possibile fare l'overload dell'operator +, ossia la somma, scrivendo
    
    operator+ ( /* argomenti */ )
    
    o di altri operatori necessari.
    Nel caso specifico è possibile scrivere:
    
    abc oggetto;
    tipo *ptr;
    oggetto(ptr);
    
    Riferimenti li puoi trovare cercando function objects tramite google.
  • Re: Problema definizione funzione

    Aaaaaaaaaaaaaaa... sta ridefinendo l'operatore di Casting!
    E lo ridefinisce n-volte, dove n sono i tipi di dato definiti nella classe...

    operator () (tipo1* a){}
    operator () (tipo2* b){}

    Grazie infinite! Ora è tutto molto più chiaro! Ricordo di averla studiata la possibilità di ridefinire gli operatori in c++, ma non credevo li potessi incontrare veramente e invece... (e infatti non ho memorizzato abbastanza l'argomento, neppure ricordavo che 'operator' fosse una parole riservata! Sono stato un po' tonto in effetti).

    grazie ancora, gentilissimo
Devi accedere o registrarti per scrivere nel forum
2 risposte