 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Trident Guest
|
Posted: Sat Jul 03, 2004 9:29 pm Post subject: Probleme d'appel de variable séparé dasn plusieur fichier .. |
|
|
Bonjour à tous,
Je programme un jeu en C++/OpenGl depuis deux semaines et comme je suis
autodidacte, viens un moment ou de gros probleme arrive.
En fait, je suis en train de faire une console, elle marchait trés bien
jusqu'a ce que je déplace son code dans un nouveau fichier.
En simplifiant mon probleme, voilà ou j'en suis.
J'ai un type d'objet qui s'appel Menu, déclarer et spécifier dans menu.h et
menu.c
tout en haut de menu.c aprés include menu.h, j'ai list<Menu*> menu_list;
et dans le constructeur il est écrit menu_list.push_front(this);
autrement dit à chaque fois que je créé un Menu, son adresse est ajouter à
la liste des menu existant.
Jusque là tout va bien.
Pour faire ma console, j'ai besoin d'un Menu_barre_v qui dérive de Menu,
donc dans console.c j'écris :
Menu_barre_v cons_barre_v;
Je compile .... je lance ... et plantage, gdb me dit que c'est au moment de
l'ajout dans la liste !!
en fait, il n'y a pas de raison que la liste soit créée avant cons_barre_v
puisqu'il sont tout les deux à un meme nivo (en tete)..
j'en ai déduit que j'essayé de créer le menu avant la liste d'ou plantage...
le pire c'est que si je demande la création du menu dans un autre fichier du
programme, ca marche (le fichier ou j'avais mis la console à l'origine).
Ma question est donc : comment faire pour que l'en téte de fichier soit
executer avant l'en tete d'un autre.
A.c:
***************
int i;
***************
B.c:
***************
int j;
***************
comment faire pour que i soit créé avant j ou vise versa ?!?
Merci d'avance pour votre aide,
Pierre.
|
|
| Back to top |
|
 |
Fabien LE LEZ Guest
|
Posted: Sat Jul 03, 2004 10:09 pm Post subject: Re: Probleme d'appel de variable séparé dasn plusieur fichie |
|
|
On Sat, 3 Jul 2004 23:29:14 +0200, "Trident"
<astro.trident (AT) wanadoo (DOT) fr>:
| Quote: | A.c:
int i;
B.c:
int j;
comment faire pour que i soit créé avant j ou vise versa ?!?
|
Si je ne m'abuse, ce n'est pas possible, du moins pas directement.
D'une manière générale, les variables globales sont déconseillées de
toutes façons.
J'avoue ne pas connaître la méthode "officielle" pour ce genre de
problèmes, mais je crois que cette méthode fonctionne :
typedef std::set <Machins*> ListeMachins;
static ListeMachins *liste_machins= 0;
void AjouteMachin (Machin* m)
{
if (liste_machins == 0)
{
liste_machins= new ListeMachins;
}
liste_machins.insert (m);
}
void EnleveMachin (Machin* m)
{
if (liste_machins != 0)
{
ListeMachins::iterator it= liste_machins.find (m);
if (it != liste_machins.end())
{
liste_machins.erase (it);
}
if (liste_machins.empty())
{
delete liste_machins;
liste_machins= 0;
}
}
}
Et, bien entendu, les constructeurs de Machin doivent appeler
AjouteMachin(), et le destructeur de Machin doit appeler
EnleveMachin().
--
schtroumpf schtroumpf
Jean-Emile de France
|
|
| Back to top |
|
 |
Trident Guest
|
Posted: Sat Jul 03, 2004 10:29 pm Post subject: Re: Probleme d'appel de variable séparé dasn plusieur fichie |
|
|
Merci pour ta réponse,
effectivement, j'ai regardé dans mon Stroustrup et y dit que il faut le
faire, c'est pas propre...
Je l'avoue, ca m'emmerde un peu, mais g réussi à faire sans.
|
|
| Back to top |
|
 |
Fabien LE LEZ Guest
|
Posted: Sat Jul 03, 2004 10:42 pm Post subject: Re: Probleme d'appel de variable séparé dasn plusieur fichie |
|
|
On Sun, 4 Jul 2004 00:29:15 +0200, "Trident"
<astro.trident (AT) wanadoo (DOT) fr>:
Ecrire les mots en entiers serait fort apprécié. Merci d'avance.
--
schtroumpf schtroumpf
Jean-Emile de France
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|