Bonjour,
J'ai déclaré une variable globale "factsPhone" comme étant une liste de faits (classe Fact) dans un fichier header "initialization.h" et j'ai crée une fonction "initializeFactsPhone()" pour remplir "factsPhone" comme suit :
"initialization.h" :
Dans un 2ème fichier Entity.cc, j'ai créé deux fonctions : la première sert à appeler la fonction "initializeFactsPhone()" pour initialiser la variable globale "factsPhone" et la 2ème fonction sert à gérer la liste "factsPhone comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 list<Fact> * factsPhone = new list<Fact> (); //facts of phone void initializeFactsPhone(){ Fact f1 (lp1, "justified", "collected"); Fact f2 (lp2, "justified", "collected"); Fact f3 (lp3, "justified", "collected"); factsPhone->push_back(f1); factsPhone->push_back(f2); factsPhone->push_back(f3); }
Entity.cc :
Mon programme commence par exécuter la fonction Entity::initialize(), j'ai pu afficher le contenu de la liste "factsPhone" dans la même fonction Entity::initialize().
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 #include "initialization.h" ... void Entity::initialize() { if (strcmp("phone", getName()) == 0) { .... initializeFactsPhone(); .... } void Entity::handleMessage(cMessage *msg) { ev << "factsPhone : " << factsPhone->empty() << endl; //afficher 1 : liste remplie; 0 : liste vide int i=0; while (!selectedRules->empty()) {.... } }
Cependant, lorsque mon programme exécute la fonction Entity::handleMessage, la liste factsPhone est vide!!! le programme affiche "1" pour "factsPhone->empty()".
Je soupçonne que c'est un problème de gestion de variable globale modifiée au sein de la fonction "Entity::initialize()" et réinitialisée dans l'autre fonction "Entity::handleMessage".
J'ai modifié la déclaration de "factsPhone" en rajoutant une fois "static" et une fois "extern" mais ça ne marche toujours pas.
Comment gérer une variable globale modifiée par toutes les fonctions et non réinitialisée pour chaque fonction ?
Pourriez vous SVP m'aider?
Je vous remercie d'avance.
Partager