La dichiarazione di un puntatore a una funzione membro è leggermente diversa dalla dichiarazione di un puntatore a una funzione globale, che è quella che ha fatto Luc@s, in particolare, nel puntatore bisogna specificare qual è la classe a cui appartiene la funzione a cui il puntatore punterà:
Codice PHP:
class Simple{
public:
int f(float){
return 1;
}
};
int main() {
//Dichairo fp come un puntatore ad una funzione membro della
//classe Simple, che prende un float e restituisce un intero
int (Simple::*fp)(float);
//Dico ad fp di puntare alla funzione f diSimple
//(non ho ancora specificato l'oggetto su cui la funzione va invocata!)
fp = &Simple::f;
//Creo un oggetto
Simple sim1;
//Invoco la funzione puntata da fp sull'oggetto sim1: nota
//i due operatori .* e le parentesi
(sim1.*fp)(1.0);
//Costruisco dinamicamente un oggetto con new
Simple *sim2 = new Simple();
//Invoco la funzione puntata da fp sull'oggetto sim2: nota
//i due operatori ->* e le parentesi
(sim2->*fp)(1.0);
}