Fontion pointer
tomjoss
Messages postés
8
Statut
Membre
-
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