Variable globale modifiée dans une fct et réinitialisée dans une autre fct
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" :
Code:
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);
} |
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 :
Entity.cc :
Code:
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())
{....
}
} |
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().
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.