PDA

View Full Version : Passare una funzione come parametro di un metodo


Mushroom
17-05-2007, 16:30
Ciao!
il mio problema č passare come argomento di un metodo una funzione tipo sinx, il metodo che accetta questa funzione deve essere in grado di riconoscere la x come una variabile sulla quale esegue le operazioni dovute.
Il mio metodo serve per il calcolo dell'integrale definito di una funzione.
Ora se io passo al metodo la funzione sotto forma di stringa, da dentro il metodo non riesco fare in modo che questa stringa venga utilizzata come una funzione e non come stringa o char.
:help:

ilsensine
17-05-2007, 16:35
Facciamo prima con un esempio:

typedef double (*my_fnc) (double);

void doit(my_fnc fnc, double arg)
{
printf("fnc(%f)=%f\n", arg, fnc(arg));
}

int main()
{
doit(sin, 0.0);
doit(cos, 0.0);
return 0;
}

tomminno
17-05-2007, 16:41
Ciao!
il mio problema č passare come argomento di un metodo una funzione tipo sinx, il metodo che accetta questa funzione deve essere in grado di riconoscere la x come una variabile sulla quale esegue le operazioni dovute.
Il mio metodo serve per il calcolo dell'integrale definito di una funzione.
Ora se io passo al metodo la funzione sotto forma di stringa, da dentro il metodo non riesco fare in modo che questa stringa venga utilizzata come una funzione e non come stringa o char.
:help:

Puntatore a funzione no?
Stabilisci il tipo di funzione cioč valore restituito e parametri:

double IntegralOf(double x, double (*function)(double))
{
...
}


In questo modo dichiari che la funzione IntegralOf accetta una variabile x e un puntatore ad una funzione che accetta come parametro un double e restituisce un double.