Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Puntero a funciones en clases

Estas en el tema de Puntero a funciones en clases en el foro de C/C++ en Foros del Web. Hola a todos, Estoy escribiendo una clase llamada GUI para una interfaz de un prototipo de videojuego. Ya tengo todo bastante pensado, como crear input ...
  #1 (permalink)  
Antiguo 10/09/2008, 08:55
 
Fecha de Ingreso: agosto-2006
Mensajes: 16
Antigüedad: 17 años, 8 meses
Puntos: 0
Puntero a funciones en clases

Hola a todos,

Estoy escribiendo una clase llamada GUI para una interfaz de un prototipo de videojuego.

Ya tengo todo bastante pensado, como crear input boxes, botones y demas, pero el problema viene a la hora de querer que cada objeto haga una funcion distinta.

Habia pensado en dar a cada objeto unas funciones con nombre onEnter, onFocus y onClick para que defina que debe hacer el programa cuando estos eventos ocurran (parecido a como lo hace Javascript) y pasar estas funciones como parametro en el constructor a la hora de crear el objeto.

Para que quede claro, ami me gustaria poder definir una funcion en mi programa, y luego pasar un puntero a esa funcion como parametro al constructor de la clase, para que guarde la direccion de memoria de esa funcion en la propia clase, y yo ejecutarla cuando el evento ocurra.

Por poner un ejemplo:
Código:
class MiClase {
public:
void onClick();

MiClase(void (*funcion_de_prueba)()) {
onClick = funcion_de_prueba;
}
}

void funcion() {
cout << "Hola!";
}

MiClase e(funcion);
e.onClick(); // Aqui deberia mostrar "Hola!" en la consola
Es solo un ejemplo pero no se si habrá quedado del todo claro...

Un saludo, espero que puedan ayudarme.
  #2 (permalink)  
Antiguo 11/09/2008, 02:23
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Puntero a funciones en clases

Código:
typedef void (onClick_ptr)();
onClick_ptr *onClick;
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:15.