C/Visual C - pasar funciones como parametros a otras funciones

 
Vista:

pasar funciones como parametros a otras funciones

Publicado por jfk (2 intervenciones) el 03/02/2001 05:41:41
como puedo hacer que una funcion en c++ me reciba como parametro otra funcion??

mi problema es el siguiente tengo que hacer una funcion que reciba como parametro otra funcion y la analize para ver si esta bien escrita y si asi es entonces hacer lo que esa funcion diga.

no se como es posible hacer eso les agradeceria un poco de ayuda con este tema algo asi como un ejemplo gracias,
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:pasar funciones como parametros a otras funcion

Publicado por Cris (11 intervenciones) el 03/02/2001 08:19:14
no entiendo bien tu pregunta, y no se si te sirva esto.
asi que te pondre un ejemplo:

void checa(int x){
if(x==1) cout<<"el numero es uno";
else cout<<"el numero no es uno";
}

int pidenumero(){
int i;
cout<<"escriba un numero";
cin>>i;
return i;
}

void main(){
checa(pidenumero()); //la funcion checha manda llamar a pidenumero y el resultado se lo asigna a su parametro.
}

espero que te sea de ayuda
saludos
Cristina
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:pasar funciones como parametros a otras funcion

Publicado por Marco Antonio (37 intervenciones) el 03/02/2001 13:16:33
Bueno, lo de comprobar si está bien escrita, no lo entiendo muy bien.
El ejemplo típico de una función que recibe otra función se hace en la ordenacion.
La funcion 'ordena' recibe una lista de números y los ordena. Para no tener que hacer una función que ordene de mayor a menor, y otra que ordene de menor a mayor, a la función ordena se le pasa como parámetro otra función 'orden' que compara dos números y dice cual debe ir antes en la lista.
Así, si queremos ordenar la lista de menor a mayor, usaríamos la función

int menor_mayor(int a, int b) {
return a < b;
}

y si queremos ordenar de mayor a menor, la contraria:
int mayor_menor(int a, int b) {
return b < a;
}

La función ordena (una lista de 100 elementos) sería:

void ordena (int lista[100], int (*f)(int, int)) {
// método de ordenacion cualquiera.
}

Y dentro de ordena, habrá llamadas como:
f(lista[i], lista[j]).

Y a la función se la llamará
ordena(mi_lista, mayor_menor);

Lo que hemos hecho, ha sido pasar en el segundo parámetro, un puntero a una función, que luego se puede usar normalmente.
El parámetro se llama f.

¿Cómo se declaran punteros a funciones?
En general, tienes una cabecera de una función:

<tipo_devuelto> nombre(<parametros>)

Se puede declarar un puntero a una función, sin más que envolver el nombre entre paréntesis, y añadir un '*' antes:

<tipo_devuelto> (*nombre_puntero_a_funcion)(<parametros_sin_nombre>)

Y esta declaración, la usar para declarar variables, o para indicar el tipo de un parámetro a una función.

¡Espero que te sirva!



Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar