Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1290 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Comment faire pour qu'un objet soit global

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment faire pour qu'un objet soit global

n°761105
pinpoy
Posté le 12-06-2004 à 05:11:00  profilanswer
 

Bonsoir, ou plutot bonjour
 
j'ai un petit probleme
 
je voudrais savoir comment faire pour qu'un objet qu'on instancie dans une fonction soit accessible dans tout le programme..
 
jexplique mon prob  
 
dans mon main() j'ai un premier menu avec un switch dessus
sur le cas1 japelle une fonction qui maffiche un deuxieme menu
dans ce deuxieme menu je choisi le type de vehicule que je veux créer
une fois le choix fait, j'ai un switch qui apelle  la fonction corespondante au choix
 
par exemple le choix1 apelle une fonction qui va me demander la saisie des infos pour un utilitaire et apeller le constructeur particulier
 
l'objet sera donc accessible que dans cette fonction mais dès quon en sort il meurt...
 
or je voudrais y accéder dans le main()  
 
Merci d'avance
 
 
(je suis un gros noob en c++ :cry: )


Message édité par pinpoy le 12-06-2004 à 05:12:15
mood
Publicité
Posté le 12-06-2004 à 05:11:00  profilanswer
 

n°761110
Ace17
Posté le 12-06-2004 à 07:51:54  profilanswer
 

Tu t'y prends mal.
La durée de vie d'une variable est entierement déterminée par l'endroit ou elle est déclarée. Si tu déclares un objet dans le corps d'une fonction il ne pourra pas etre global.
Tu dois utiliser un pointeur de type vehicle ( la classe de base ) qui lui doit etre global. Dans ton menu, tu fais des new avec le type correspondant. Exemple :
 
 

Code :
  1. Vehicule* g_Vehicule;
  2. void Choisir()
  3. {
  4.     // ........
  5.     switch(i)
  6.     {
  7.     case 1:
  8.          g_Vehicule = new Camion;
  9.          break;
  10.     case 2:
  11.          g_Vehicule = new Voiture;
  12.          break;
  13.     case 3:
  14.          g_Vehicule = new Ferrari;
  15.          break;
  16.     }
  17. }


Message édité par Ace17 le 12-06-2004 à 07:54:20
n°761117
Taz
bisounours-codeur
Posté le 12-06-2004 à 09:28:12  profilanswer
 

une enum bordel :o
 
et le singleton bordel :o

n°761119
Ace17
Posté le 12-06-2004 à 09:34:52  profilanswer
 

mais putain c'est juste pour lui montrer! Evidemment qu'il faut pas utiliser une fonction globale et encore moins des nombres magiques... mais je vais pas m'emmerder a lui pondre du code irréprochable alors que je veux juste lui faire comprendre le principe d'une fabrique!  
Le code que j'ai posté n'est en aucun cas destiné a etre copié-collé et encore moins compilé!


Message édité par Ace17 le 12-06-2004 à 09:35:12
n°761120
Taz
bisounours-codeur
Posté le 12-06-2004 à 09:35:48  profilanswer
 

ben ne lui montre pas quelque chose de mauvais, abstiens toi

n°761127
Joel F
Real men use unique_ptr
Posté le 12-06-2004 à 10:07:31  profilanswer
 

y a deja eu un thread sur le singleton ou j'ai donner du code.

n°761130
Ace17
Posté le 12-06-2004 à 10:12:51  profilanswer
 

Taz a écrit :

ben ne lui montre pas quelque chose de mauvais, abstiens toi


mauvais? oui, il est clair que je ne me permettrais pas d'écrire du code comme ca dans un quelconque projet.
Maintenant, mon but, c'est pas de lui écrire du code a sa place, c'est de lui faire comprendre l'idée qu'il y a derriere ce code. Et en ce sens, ce code n'est pas mauvais.
Apres c'est juste une question de savoir s'il faut donner du code pret a l'emploi ou s'il faut laisser l'autre chercher un peu.


Message édité par Ace17 le 12-06-2004 à 10:13:50
n°761135
Taz
bisounours-codeur
Posté le 12-06-2004 à 10:18:55  profilanswer
 

et ben il a rien compris justement. ton code est mauvais, exemple ou pas. ça sert à rien de passer d'une erreur à une autre.

n°761138
Ace17
Posté le 12-06-2004 à 10:22:18  profilanswer
 

Bon, ben dans ce format la, ca te convient mieux?
 
Debut fonction de création de vehicules
          faire un switch sur le type de véhicule désiré
          instancier un objet en utilisant new (type de véhicule désiré)
          renvoyer l'addresse de ce nouvel objet a l'appelant
Fin fonction de création de vehicules


Message édité par Ace17 le 12-06-2004 à 10:27:45
n°761140
Taz
bisounours-codeur
Posté le 12-06-2004 à 10:24:44  profilanswer
 

et la variable globale ça parait de bon aloi ?

mood
Publicité
Posté le 12-06-2004 à 10:24:44  profilanswer
 

n°761144
Ace17
Posté le 12-06-2004 à 10:27:10  profilanswer
 

LOL [:rofl]
C'est vrai, j'ai oublié celle la! Je corrige

n°761162
Ace17
Posté le 12-06-2004 à 10:59:40  profilanswer
 

N'empeche que... a la relecture du titre du topic, je comprends pourquoi j'avais fait cette "erreur". Apres tout, c'est ce qu'il voulait!

n°761230
pinpoy
Posté le 12-06-2004 à 13:11:53  profilanswer
 

merci de toutes vos réponses
 
en fait je my étais pris comme un pieds
 
javais définis  

Code :
  1. utilitaire *util1=new utilitaire(vol, kg, num, mar, nom, poids, km);

 dans la méthode void ini_ut(); qui est apelé dans le sous-menu
 
je vais rectifier ca
 
EDIT Forcément ca marche bcp mieux lol, par contre quand en me levant j'ai vu que vous parliez de singleton pour mon petit probleme j'étais  :whistle: pas rassuré


Message édité par pinpoy le 12-06-2004 à 13:30:21

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Comment faire pour qu'un objet soit global

 

Sujets relatifs
Où est ma faute? msg d'erreur("objet requis")ActiveX , objet dans page HTML
EventListener sur un objet window[prog objet] utilitaires [inutiles] de schémas d'héritage
[js] pb de reference objet avec setIntervaldocument a la valeur null ou n'est pas un objet???
comment sauvegarder tous les éléments d'un objet ?[java] détruire un objet
[php] Enregistrer un objetObjet a conservé avec methoe post.
Plus de sujets relatifs à : Comment faire pour qu'un objet soit global


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR