IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Contrôler l'ordre de création de classes globales


Sujet :

C++

  1. #1
    Membre émérite Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    890
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 890
    Par défaut Contrôler l'ordre de création de classes globales
    J'ai deux objets globaux (disons ClasseToto Toto et ClasseTiti Titi) dans deux sources différents (allez, toto.cpp et titi.cpp). Une classe ayant besoin de l'autre, y a-t-il un moyen (simple et portable) de dire au compilateur de créer Toto avant Titi ?

    Réponses anticipées:
    1) A ceux qui vont me proposer de faire un new ClasseToto dans le constructeur de Titi, je ne peux pas. Le fichier Titi est généré par un traitement automatique, et je ne sais pas par avance combien d'objets Titi il y aura. Le fichier Titi.cpp sera ensuite linké avec Toto.obj, donc Toto et ClasseToto doivent être définis heu... définitivement.
    2) A ceux qui me diront que les variables globales c'est mal, je leur répondrais que je sais.

  2. #2
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Faire une déclaration anticipée de Toto avant Titi.

  3. #3
    Membre émérite Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    890
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 890
    Par défaut
    Citation Envoyé par seriousme
    Faire une déclaration anticipée de Toto avant Titi.
    Non, ce n'est pas la solution. Ce n'est pas un problème de compilation, mais un problème d'exécution. C'est ce qui est décrit dans la FAQ comme "Le fiasco dans l'ordre d'initialisation des variables globales" (http://c.developpez.com/faq/cpp/?pag..._static_fiasco). Mais la solution proposée ne me convient pas (pour les raisons évoquées plus haut).

  4. #4
    Membre émérite Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    890
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 890
    Par défaut
    Bon, en bidouillant un peu (quelques #define par ci par là), le coup du Wrapper décrit dans la FAQ marche quand même. Merci.

  5. #5
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 292
    Par défaut
    Tu fais des singletons (ou n'importe quoi dont la création peut être implémentée via un new => pas de globales qui en interne ne sont pas des pointeurs), et dans ton prog principal, tu les init-construiras dans l'ordre qui va bien.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [RMI] problème Création *_stub.class et *_skel.class
    Par philobedo dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 29/05/2006, 20h03
  2. Création de classe exception
    Par HNT dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 03/01/2006, 15h53
  3. Création de classes à la volée...
    Par ouiffi dans le forum Langage
    Réponses: 8
    Dernier message: 16/12/2005, 18h01
  4. Réponses: 5
    Dernier message: 10/11/2004, 19h44
  5. Ordre de création de composant
    Par bobby-b dans le forum Composants VCL
    Réponses: 4
    Dernier message: 15/09/2003, 19h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo