Logo

¡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.
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.