He estado leyendo acerca de los punteros de función y sobre cómo usarlos como parámetros para otras funciones. Mi pregunta es ¿cómo pasarías una función por referencia sin usar punteros? He intentado encontrar la respuesta en Internet, pero no he encontrado una buena respuesta. Sé que puede pasar variables por referencia como esta: void funct(int& anInt);
. ¿Cómo haría algo similar a esto, pero en lugar de una referencia a una variable, una referencia a una función era el parámetro? Además, ¿cómo usarías una referencia a la función en un cuerpo de función?C++: ¿Cómo pasar referencia-a-función a otra función?
Respuesta
#include <iostream>
using namespace std;
void doCall(void (&f)(int))
{
f(42);
}
void foo(int x)
{
cout << "The answer might be " << x << "." << endl;
}
int main()
{
doCall(foo);
}
Saludos & HTH,
Solo por curiosidad, ¿por qué querría usar una referencia a una función en lugar de un puntero a una función? – fredoverflow
@FredOverflow: Porque un puntero puede ser nulo o no válido. Una referencia garantiza que es válida y no nula (no hay referencia nula), o que hay un error en el programa. –
@Alf P. Steinbach: "o bien, que hay un error en el programa" Eso suena muy bien en teoría, pero si tiene algo como 'tipo y ref = * ptr;' la dirección en el puntero simplemente se copiará en la dirección en la referencia, que puede ser no válido o nulo. Usted podría decir que la declaración anterior es un comportamiento indefinido cuando 'ptr' no es válido o nulo, pero no habrá ninguna indicación de esto en tiempo de compilación o tiempo de ejecución, por lo que depende del programador asegurarse es válido y no nulo, lo mismo que si usaras un puntero. Entonces digo que no hay ninguna diferencia para el programador. – newacct
- 1. Python - Pasar una función a otra función
- 2. Pasar una función a otra función en Actionscript 3
- 3. ¿Cómo puedo pasar varargs a otra función en vimscript?
- 4. Pasar una variable local de una función a otra
- 5. Directamente Saltar a otra función de C++
- 6. cómo pasar una variable a otra rosca
- 7. Javascript: ¿Cómo pasar de una función con parámetros de cadena como parámetro a otra función
- 8. Cómo saber qué función llama a otra
- 9. C++: ¿Cómo paso una función (sin conocer sus parámetros) a otra función?
- 10. Cómo pasar una matriz bidimensional a una función en C++
- 11. C#: ¿Cómo pasar null a una función esperando una referencia?
- 12. ¿Cómo pasar el predicado a la función en C#?
- 13. ¿Cómo puedo pasar un evento a una función en C#?
- 14. C: ¿Cómo pasar un doble puntero a una función
- 15. Cómo pasar una cadena a una función en Objective-C
- 16. Pasando todos los argumentos de una función a otra función
- 17. ¿Pasar variables de una función a otra función en un controlador en codeigniter?
- 18. ¿Cómo pasar un método de clase como argumento para otra función en C++ y OpenGL?
- 19. Cómo pasar de una función C/C++ a la siguiente (ambas direcciones)
- 20. Pasar objeto con NSNotificationCenter a otra vista
- 21. ¿Cómo pasar un archivo a una función?
- 22. ¿Cómo pasar un vector a una función?
- 23. Pasar $ (esto) a una función
- 24. ¿Cómo pasar todos los argumentos como colección a otra función y no como un solo argumento?
- 25. PHP, ¿cómo pasar los valores de func-get-args a otra función como lista de argumentos?
- 26. Pasando una elipsis a otra función variable
- 27. pasar una función a una función en Matlab
- 28. C: pasar una matriz a una función 'sobre la marcha'
- 29. Probar que una función llame a otra función con Mocha
- 30. ¿Cómo pasar/evaluar argumentos de función dentro de otra función para usar con ggplot?
. Nota: No se puede pasar funciones. Solo puede pasar referencias o punteros a las funciones. –