Codders, resources for programmers by Vokimon

Curset de C avancat: Crida un punter a funcio

Hola, bocho, una pregunta sobre la practica del pringuis department.

Como podemos llamar a una funcion que esta como puntero a funcion dentro de una estructura?

Grasias por responder.


Dena, mister.

En cuanto a como llamar a una funcion que esta dentro de una estructura la verdad es que no tengo ni idea... No, es broma... Ahora te lo xpliko:

Supongo que tendras un puntero a una estructura que tiene un campo que es un puntero a funcion. Quelkom enaxi:

  typedef struct TLLISTAGEN {
     ...
     void esborra (void *);
     ...
     } tllistagen;
  tllistagen *l;

Compte!! Te he colocado el ejemplo en la practica, pero igual estoy metiendo la pata con esta definicion.

Bueno, por pasos, la cosa va de que tienes un puntero a una estructura.

       l;

Ahora quieres pillar la estructura a la que apunta:

       *l;

Dexta estructura quieres coger el elemento que es puntero a funcion:

       (*l).esborra; o lo que es equivalente: l->esborra;

Pero esto no llama la funcion sino que da el valor del puntero; utilicemos el operador de llamada ():

       l->esborra (yoquese);

Donde yoquese es un void * segun la definicion de arriba i que ya sabras tu como lo obtienes i pa ke kieres borrarlo.

Espero que os haya resuelto la duda. Si no es asi o me xpliko tan mal que os han salido otras, xtoi a buestra disposizion.

Vokimon (is04069)