Fontion pointer
tomjoss
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
sambia39 Messages postés 610 Date d'inscription Statut Membre Dernière intervention -
sambia39 Messages postés 610 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
suis encore débutant en programmation c++. j ai declare les fonctions comme suit:
source1.h
source2.h
source1_source2.cc
ici j ai implemente la fonction info(),eingabe() et information(). dans la fonction void information() j ai appelé la fonction info() et dans la fonction info() j ai appelle la fonction eingabe(). la fonction info() est appelle par son pointer typedef info_struct (*info_f_t) ();
dans la fonction information():j ai aussi appele les autres fonctions de mon programme avec le pointer:
typedef void (*f_t) (ListPerson* list); defini dans source1.h.
comme ceci:
*******************************************
************************************************+
dans main.cc
j ai la boucle:
la boucle s execute bien au premier appel.
au deuxième appel de la fonction information() appelle la fonction info() mais les outputs qui sont ds eingabe() ne s affiche plus et la linge ci: (*NAME])(list); est directementement execute avec la meme fonction que le programme venait d exécute. je ne sais pas si c est un problème de lainage.
merci pour tout aide et contribution
suis encore débutant en programmation c++. j ai declare les fonctions comme suit:
source1.h
space{ typedef struct_name1 (*info_f_t) (); extern "C" struct_name1 info(); typedef void (*f_t) (ListPerson* list); }
source2.h
extern "C" void information(); extern "C" struct_name2 eingabe();
source1_source2.cc
ici j ai implemente la fonction info(),eingabe() et information(). dans la fonction void information() j ai appelé la fonction info() et dans la fonction info() j ai appelle la fonction eingabe(). la fonction info() est appelle par son pointer typedef info_struct (*info_f_t) ();
dans la fonction information():j ai aussi appele les autres fonctions de mon programme avec le pointer:
typedef void (*f_t) (ListPerson* list); defini dans source1.h.
comme ceci:
void information(){ response= (*info_f_t) (); const char* NAME = response.info->name; std::string strr( NAME); typedef std::map<std::string, f_t> mapFunction; mapFunction maping; maping[NAME]=&founctionName; (*NAME])(list); }
*******************************************
struct_name2 eingabe(){ cout<<"choisissez une fonction"; return fName; }
************************************************+
space::struct_name1 space::info(){ struct_name2 myinfo= eingabe(); struct_name1 mInfo = {1 , myinfo}; return mInfo; }
dans main.cc
j ai la boucle:
while (rs!=true){ information(); }
la boucle s execute bien au premier appel.
au deuxième appel de la fonction information() appelle la fonction info() mais les outputs qui sont ds eingabe() ne s affiche plus et la linge ci: (*NAME])(list); est directementement execute avec la meme fonction que le programme venait d exécute. je ne sais pas si c est un problème de lainage.
merci pour tout aide et contribution