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 :

chaine de carateres constante dans le constructeur


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 48
    Points : 33
    Points
    33
    Par défaut chaine de carateres constante dans le constructeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class maClasse
    {
        public :
             static const std::string chaine="blabla";
     
    }
    -> ERREUR déclaration interdite dans la classe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class maClasse
    {
        public :
             static const std::string chaine;
     
    maClasse() //constructeur
    {
      chaine="blabla";
    }
     
    }
    -> ERREUR

    Mais alors comment utiliser une valeur de chaine de caractère constante dans le constructeur ?
    Je seche.

  2. #2
    Membre expérimenté Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Points : 1 396
    Points
    1 396
    Par défaut
    Salut,

    Il y a déjà un soucis dans ce que tu veux faire au niveau du mot clé static. Si c'est static ça veut dire que ça sera une variable non pas d'instance mais de classe et donc que toutes tes instances de ta classe utiliseront la même chaine ! Ce n'est donc pas dans le constructeur qu'il faut que tu initialises cette valeur.

    Il faut que tu l'initialises dans .cpp de cette façon (en gardant la déclaration avec le mot clé static dans le .hpp) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const std::string maClasse::CHAINE = "blabla" ;
    Les majuscules sont souvent utilisées pour des variables constantes.

  3. #3
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 826
    Points : 218 287
    Points
    218 287
    Billets dans le blog
    117
    Par défaut
    Bonjour,

    N'oublions pas que cette question avait une réponse dans la FAQ (et que peut apprendre déjà beaucoup en la lisant).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    Si d'aventure ce n'est pas une variable de classe (static) mais bien une variable d'instance constante, comme pour tous les autres membres (si ce n'est qu'ici, il n'y a pas le choix), il faut utiliser les listes d'initialisations :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    class maClasse
    {
       public :
     
     
       maClasse() //constructeur
          :chaine("blabla")
       {
       }
    private:
       const std::string chaine;
     
    }
    F.A.Q : Mes constructeurs doivent-ils utiliser les listes d'initialisation ou l'affectation ?

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

Discussions similaires

  1. initialisation d'une constante dans le constructeur ?
    Par Lorenzo77 dans le forum ActionScript 3
    Réponses: 4
    Dernier message: 06/08/2009, 11h10
  2. Réponses: 3
    Dernier message: 30/11/2007, 21h18
  3. Réponses: 15
    Dernier message: 11/09/2007, 19h36
  4. effacer un chaine de carateres dans un fichier texte
    Par crunk dans le forum Général Python
    Réponses: 5
    Dernier message: 14/10/2006, 09h50
  5. Réponses: 3
    Dernier message: 16/12/2005, 14h00

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