Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Llamar a una función de forma dinámica.

Iniciado por pablomatico, 29 de Noviembre de 2006, 10:21:50 AM

« anterior - próximo »

pablomatico

Hola, os explico lo que quiero hacer porque por el título del hilo es dificil averiguarlo jeje..

Yo quiero almacenar en una tabla los nombres o punteros a distintas funciones o procedimientos, para luego poder llamar a una función a través de la información almacenada en esa tabla, se puede hacer esto en c++?

Gracias de antemano, espero haberme explicado algo...

AK47

Sí se puede hacer, por ejemplo mediante punteros a funciones. Miratelos, pero te aviso que son un poco engorrosos de usar... Por cierto, creo que la librería boost te ofrece ciertos wrappers y elementos por el estilo para manipularlos más facilmente.

Helius

Un puntero a un método en C++, con unos parámetros de ejemplo:

int (TClase::*ptMetodo)(float, int, char) = NULL;
Te creas un typedef:

typedef int (TClase::*ptMetodo)(float, int, char);
Y luego el array:

ptMetodo miArray[100] = NULL;
Los tendrás que inicializar con la dirección de los métodos que desees y luego para usarlos:

(*miArray[3])(40.0f, 7, 'a');
No estoy seguro de si esto funciona:

miArray[3](40.0f, 7, 'a');
Saludos.
Geardome Devlog
Tutoriales sobre DirectX 9, Nintendo DS y PSP.

shephiroth

Hace mucho q no lo uso, pero creo recordar que habria que usar miArray[3]->Invoke(40.0f, 7, 'a');

SUERTE ^^

AK47

Invoke? Mmmm, creo que te has confundido con el C#. No es ese el mecanismo de los delegates?


AK47

Bueno bueno, yo lo decia por el "invoke"  :oops:  El -> es claramente de C/C++ ;)

shephiroth

Cierto, el invoke es de los delegados....pero respecto a c# te confundes, los delegados son "tecnologia" del .net, no son exclusivos de c# que como bien te dijeron, en # el -> es sacrilegio xDD

SALUDOS ^^

pablomatico

Muchisimas gracias a todos por las respuestas, en cuanto salga del trabajo lo pondré en práctica y ya os contaré si lo consigo o no.

Saludoss






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.