Uhm, manca effettivamente qualcosa a riguardo nella guida e forse sarebbe il caso di trattare anche questo...
Un puntatore è nient'altro che una variabile che contiene un indirizzo in memoria, di una variabile o una funzione, si tratta comunque di un indirizzo.
In mShell è possibile far contenere a una variabile l'indirizzo di una funzione (ma non di una variabile, non chiedetemi perchè).
Un esempio veloce:
function somma(primo,secondo)
return a+b;
end;
function differenza(primo,secondo)
return a-b;
end;
"scegli cosa vuoi fare" // sarebbe da implementare il codice per la scelta ma mi secca
"inserisci a e b" // sarebbe da scrivere anche questo
if scelta=1 then pFunc=&somma end;
if scelta=2 then pFunc=&differenza end;
print pFunc(a,b);
Questo è un utilizzo molto stupido dei puntatori a funzione, però in generale può avere utilità anche fondamentali.
Un esempio, mettiamo caso qualcuno crei una classe per creare figure geometriche, e voglia lasciare la libertà al programmatore di decidere come implementare la funzione per stampare gli oggetti. In questo caso il programmatore si ritrova già tutta la classe bell'e fatta e deve soltanto preoccuparsi di realizzare una funzione, che poi passerà come parametro al costruttore della classe, la quale saprà quale funzione chiamare per stampare gli oggetti...
Mi viene questo esempio, ma ce ne potrebbero essere anche molti altri, se lento o qualcun altro ha qualcos'altro in mente o un esempio migliore che lo scriva pure, magari riusciamo a essere più chiari e poi metto tutto nella guida
ps. Dovremmo anche parlare di classi astratte...

quante cose e quanto poco tempo a disposizione!!!
Messaggio modificato da masmil1988 il 30 novembre 2009 - 16:15