Pregunta: | 6025 - FUNCIONES COMO PARAMETROS DE OTRAS FUNCIONES |
Autor: | julian castrillon |
como puedo hacer que una funcion me reciba como parametros otras funciones. la funcion que las recibira esta hecha de antemano y las funciones parametros seran ingresadas por un usuario y el progama recibira esas funciones del usuario y realizara lo que en ellas se diga como es posible hacer esto??
si tienen ejemplos o sugerencias les agradeceria mucho muchas gracias de antemano |
Respuesta: | Javier Gutierrez |
Su pregunta es muy sencilla. Cualquier libro medianamente decente sobre ANSI c++ (NO sobre VisualC++ o similares) contiene la respuesta.
Sin entrar en muchos detalles: una función no es más que una dirección de memoria, luego se puede declarar un puntero que apunte a dicha función. Ejemplo: typedef int (*puntero_a_funcion)(); // Declara un tipo de dato llamado puntero_a_funcion que podrá apuntar a cualquier funcion que devuelva un int y no admita parametros int soyCinco() { return 5; }; // Una funcion que se ajusta al tipo de funciones anterior int quienSoy( puntero_a_funcion puntero) { // puntero puede apuntar a cualquier funcion que devuelva un entero y no admita parametros cout< }; main() { quienSoy(soyCinco); // Obtenemos "5" por pantalla }; La notación puede resultar un poco extraña. Primero, el uso de los paréntesis en el typedef debe ponerse así. Segundo, &soyCino y soyCinco son la misma cosa. Tercero *puntero y puntero son la misma cosa. Cuarto, he escrito esto de cabeza por lo que puede que haya algún fallo de notación, aunque la idea es correcta. Saludos. |