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 :

validite d'une static global dans une classe


Sujet :

C++

  1. #21
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    Citation Envoyé par nicroman Voir le message
    statique dans le source: variable uniquement liée à l'unité de compilation, invisible hors de celle-ci.
    Même avec le mot clef extern ?

    Pour contrôler l'ordre de désinitialisation, j'ai le souvenir qu'Alexandrescu avait donné un truc avec l'utilisation de la fonction atexit. Il faudrait que je regarde.

  2. #22
    Expert confirmé

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par NiamorH Voir le message
    Même avec le mot clef extern ?
    On parle de déclaration....

    Dans un source, si il ya "extern machin trucmuche", ca veut dire que trucmuche doit être importé d'une autre unité de compilation lors du "link".

    Quand au "static" global... il suffit de faire le test dans un header, inclut dans plusieurs sources...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    static const std::string test="test de chaine";
    Chaque source aura sa propre instance de "test".

  3. #23
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par r0d Voir le message
    Non, elle sont allouées lors de leur initialisation.
    une variable globale static est initialisé au lancement du programme non?

  4. #24
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    Citation Envoyé par nicroman Voir le message
    Quand au "static" global... il suffit de faire le test dans un header, inclut dans plusieurs sources...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    static const std::string test="test de chaine";
    Chaque source aura sa propre instance de "test".
    Oui ! Je me souviens en avoir déjà fait les frais...

    Mon cas était un peu différent donc je le poste ici au cas où quelqu'un rencontre le probleme à nouveau.

    J'avais implémenté un simple singleton monothread de la sorte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    MonSingleton &
    MonSingleton::Instance()
    {
      static MonSingleton inst;
      return inst;
    }
    Jusque là pas de soucis, mais j'avais par erreur, inliné la méthode. Résultat : en débug tout allait bien mais en Release, comme mon singleton était appellé à des endroits différents, les instances étaient différentes à chaque endroit, plantage à la fermeture du programme évidement. J'ai mis longtemps avant de trouver que l'erreur venait de là.

  5. #25
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Oui, sinon on aurait du mal avec les traits.

    (réponse au message de NiamorH avec le Test::i & compagnie)

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 6
    Dernier message: 13/11/2009, 16h06
  2. Réponses: 15
    Dernier message: 27/03/2009, 13h37
  3. Problème d'affectation d'une liste globale dans une classe
    Par _mich_ dans le forum Général Python
    Réponses: 4
    Dernier message: 30/06/2008, 17h50
  4. Réponses: 3
    Dernier message: 14/12/2006, 10h09
  5. Réponses: 11
    Dernier message: 08/02/2006, 16h59

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