Ciao, qualcuno può spiegarmi meglio i puntatori a funzione?
Purtroppo sul libro che sto leggendo non sono riuscito a capire bene come si usano e la loro utilizà...
Ciao![]()
Ciao, qualcuno può spiegarmi meglio i puntatori a funzione?
Purtroppo sul libro che sto leggendo non sono riuscito a capire bene come si usano e la loro utilizà...
Ciao![]()
Questa è la dichiarazione del puntatore a funzione.
Questa è come chiami la funzione (per esempio dal main):codice:tipo (*ptr)(parametri funzione);
Per assegnarla fai:codice:(*ptr)(parametri funzione);
Per eseguirla fai:codice:ptr=nome_funzione;
Tutto qui, come se fosse una normale funzione.codice:(*ptr)(parametri);
L'ultilità è per esempio quando una funzione deve essere chiamata da eventi esterni, esempio la selezione di un menù.
In questo caso per esempio fai un vettore di puntatori a funzione.
Ciao.
michele
michele.facchin@virgilio.it
Server:irc.azzurra.org | /join #c
In un menù stampi le opzioni col numero associato, poi con il numero digitato dall'utente richiami nell'array di punatori a funzione la funzione corrispondente.![]()
Windows Xp
[Java]
[PHP]Notepad++
[Fortran90-77]elf90 g77
[C++ /WinAPI] DevC++ VisualC++
nel caso una funzione mi restitusica un return del tipo:
return * oppure return & come si gestisce questa cosa, quale è la variabile che mi dovra contenere questi dati per forza un PUNTATORE giusto?
Grazie![]()
Non c'è alcuna differenza con le funzioni normali, una volta che l'hai chiamata la funzione ritorna normalmente.![]()
Windows Xp
[Java]
[PHP]Notepad++
[Fortran90-77]elf90 g77
[C++ /WinAPI] DevC++ VisualC++
Ultimissa domanda
Time &Time::setTime( int h, int m, int s )
{
setHour( h );
setMinute( m );
setSecond( s );
return *this;
}
Questa funzione con il & davanri che cosa significa?
Inoltre il *this a che serve di preciso e su quale variabiel va messa ES:
quale variabile = funzione;
Grazie Mille![]()
La & dopo il tipo ritornato dalla funzione significa che la funzione ritorna un'indirizzo ad un oggetto di tipo Time,
la funzione infatti se invocata modifica i paramentri dell'oggetto Time e ritorna lo stesso.![]()
Windows Xp
[Java]
[PHP]Notepad++
[Fortran90-77]elf90 g77
[C++ /WinAPI] DevC++ VisualC++
Questo l'ho capito in pratica mi rida l'indirizzo del valore che io passo da RETURNOriginariamente inviato da Xadoom
La & dopo il tipo ritornato dalla funzione significa che la funzione ritorna un'indirizzo ad un oggetto di tipo Time
Però non ho capito questo pezzo, se io modifico l'oggetto time che cosa succede dopo? cioè quando faccio il return?Originariamente inviato da Xadoom
la funzione infatti se invocata modifica i paramentri dell'oggetto Time e ritorna lo stesso.![]()
In questo caso viene ritornato l'oggetto modificato, ma mi pare una cosa in eccesso in quanto comunque l'oggetto è stato modificato!! Cioè fa una cosa del genere:
Per questo non capisco l'utilità di far ritornare al metodo l'oggetto stesso che comunque è modificato!codice:Time t; t = t.setTime(...) //ciò ha lo stesso effetto di t.setTime(...)
Windows Xp
[Java]
[PHP]Notepad++
[Fortran90-77]elf90 g77
[C++ /WinAPI] DevC++ VisualC++
Grazie adesso o capito, questo ero soklo un esempio che mi dava il libro per farmi vedere come si può utilizzare il puntatore THIS![]()