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 :

[Attributs statics] Regrouper des valeurs dans une classe


Sujet :

C++

  1. #1
    Membre habitué Avatar de Wookai
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2004
    Messages : 307
    Points : 180
    Points
    180
    Par défaut [Attributs statics] Regrouper des valeurs dans une classe
    Bonjour à tous !

    J'ai besoin dans mon programme d'utiliser différentes valeurs à plusieurs endroits, et j'ai pensé les regrouper dans une classe, en tant qu'attributs statics. Voici le code de ma classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #ifndef PARAM
    #define PARAM
     
     class Param {
     
     public :
     
     static int longueur_liste_tabou;
     static int critere_arret_intens;
     static int critere_best_improving;
     static int critere_arret_div;
     static int it_escape;
     static double facteur_flow;
     static double facteur_contraintes;
     static double fraction_deepSearch;
     
     };
     
      int Param::longueur_liste_tabou = 7;
      int Param::critere_arret_intens = 15;
      int Param::critere_best_improving = 5;
      int Param::critere_arret_div = 3;
      int Param::it_escape = 10;
      double Param::facteur_flow = 0.9;
      double Param::facteur_contraintes = 0.1;
      double Param::fraction_deepSearch = 0.15;
     
     
    #endif
    Lorsque j'inclus ce fichier (param.h) où j'en ai besoin, j'ai l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    usr/bin/ld: multiple definitions of symbol Param::facteur_flow
    /var/tmp//cc5fj4wK.o definition of Param::facteur_flow       in section (__DATA,__data)
    /var/tmp//ccy03g5I.o definition of Param::facteur_flow       in section (__DATA,__data)
    /usr/bin/ld: multiple definitions of symbol Param::critere_arret_div
    /var/tmp//cc5fj4wK.o definition of Param::critere_arret_div       in section (__DATA,__data)
    /var/tmp//ccy03g5I.o definition of Param::critere_arret_div       in section (__DATA,__data)
    /usr/bin/ld: multiple definitions of symbol Param::facteur_contraintes
    /var/tmp//cc5fj4wK.o definition of Param::facteur_contraintes       in section (__DATA,__data)
    /var/tmp//ccy03g5I.o definition of Param::facteur_contraintes       in section (__DATA,__data)
    /usr/bin/ld: multiple definitions of symbol Param::fraction_deepSearch
    /var/tmp//cc5fj4wK.o definition of Param::fraction_deepSearch       in section (__DATA,__data)
    /var/tmp//ccy03g5I.o definition of Param::fraction_deepSearch       in section (__DATA,__data)
    /usr/bin/ld: multiple definitions of symbol Param::critere_arret_intens
    /var/tmp//cc5fj4wK.o definition of Param::critere_arret_intens       in section (__DATA,__data)
    /var/tmp//ccy03g5I.o definition of Param::critere_arret_intens       in section (__DATA,__data)
    /usr/bin/ld: multiple definitions of symbol Param::longueur_liste_tabou
    /var/tmp//cc5fj4wK.o definition of Param::longueur_liste_tabou       in section (__DATA,__data)
    /var/tmp//ccy03g5I.o definition of Param::longueur_liste_tabou       in section (__DATA,__data)
    /usr/bin/ld: multiple definitions of symbol Param::critere_best_improving
    /var/tmp//cc5fj4wK.o definition of Param::critere_best_improving       in section (__DATA,__data)
    /var/tmp//ccy03g5I.o definition of Param::critere_best_improving       in section (__DATA,__data)
    /usr/bin/ld: multiple definitions of symbol Param::it_escape
    /var/tmp//cc5fj4wK.o definition of Param::it_escape      in section (__DATA,__data)
    /var/tmp//ccy03g5I.o definition of Param::it_escape      in section (__DATA,__data)
    collect2: ld returned 1 exit status
    Est-ce que je m'y prends mal pour définir ma classe et les valeurs de mes attributs ? Je précise qu'ils ne sont pas constants car je dois les modifier en cours d'exécution.

    Merci d'avance pour votre aide !

  2. #2
    Membre habitué
    Lycéen
    Inscrit en
    Juillet 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 33

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2007
    Messages : 148
    Points : 145
    Points
    145
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int Param::longueur_liste_tabou = 7;
      int Param::critere_arret_intens = 15;
      int Param::critere_best_improving = 5;
      int Param::critere_arret_div = 3;
      int Param::it_escape = 10;
      double Param::facteur_flow = 0.9;
      double Param::facteur_contraintes = 0.1;
      double Param::fraction_deepSearch = 0.15;
    Il faut mettre ça dans le .cpp

  3. #3
    Membre averti Avatar de Kujara
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 262
    Points : 358
    Points
    358
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      int Param::longueur_liste_tabou = 7;
      int Param::critere_arret_intens = 15;
      int Param::critere_best_improving = 5;
      int Param::critere_arret_div = 3;
      int Param::it_escape = 10;
      double Param::facteur_flow = 0.9;
      double Param::facteur_contraintes = 0.1;
      double Param::fraction_deepSearch = 0.15;
    Les membres statiques doivent etre definis dans un seul .cpp.
    Or, tu les met dans le .h, donc dans tous les .cpp qui l'inclu.

  4. #4
    Membre habitué Avatar de Wookai
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2004
    Messages : 307
    Points : 180
    Points
    180
    Par défaut
    Ok, j'essaierai ça !

    Mais je pensais que les entêtes pré-compilateur nous évitaient ce genre de soucis ?

  5. #5
    Membre averti Avatar de Kujara
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 262
    Points : 358
    Points
    358
    Par défaut
    Citation Envoyé par Wookai Voir le message
    Ok, j'essaierai ça !

    Mais je pensais que les entêtes pré-compilateur nous évitaient ce genre de soucis ?
    Les gardes d'include ça sert juste a eviter qu'un fichier .h soit inclus 2 fois d'affilé dans le même .cpp.

  6. #6
    Membre habitué
    Lycéen
    Inscrit en
    Juillet 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 33

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Juillet 2007
    Messages : 148
    Points : 145
    Points
    145
    Par défaut
    Citation Envoyé par Wookai Voir le message
    Mais je pensais que les entêtes pré-compilateur nous évitaient ce genre de soucis ?
    Ça évite d'inclure plusieurs fois le même fichier .h (qui peut faire une boucle infinie) dans un autre fichier.

    Mais les définitions des variables statiques seront quand même incluses dans chaque fichier qui l'appelle, alors qu'il faut qu'elles soient définie qu'une seule fois dans tous les fichiers réunis.

  7. #7
    Membre habitué Avatar de Wookai
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2004
    Messages : 307
    Points : 180
    Points
    180
    Par défaut
    Ok, j'ai bien compris la différence !

    Je testerai ça demain et vous tiendrai au courant !

    Merci en tous cas pour la rapidité et la qualité des réponses !

    Bonne soirée/nuit à tous !

  8. #8
    Alp
    Alp est déconnecté
    Expert éminent sénior

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 861
    Points
    11 861
    Par défaut
    Tu as regardé la FAQ C++ ? Tout y est expliqué

  9. #9
    Membre habitué Avatar de Wookai
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2004
    Messages : 307
    Points : 180
    Points
    180
    Par défaut
    Oups , normalement je pense à aller y jeter un oeil, mais là j'ai complètement zappé !

    Si jamais, pour les autres étourdis comme moi, tout est expliqué ici !

    Merci !

  10. #10
    Membre habitué Avatar de Wookai
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2004
    Messages
    307
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2004
    Messages : 307
    Points : 180
    Points
    180
    Par défaut
    Re, juste pour vous dire que ça marche nickel maintenant en mettant les définitions dans le .cpp !

    Encore merci à tous !

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

Discussions similaires

  1. Regrouper des colonnes dans une classe
    Par Roger_Rabbit dans le forum JPA
    Réponses: 3
    Dernier message: 23/10/2013, 09h54
  2. Récupérer des valeurs dans une JFrame à partir d'une classe
    Par stratocasters dans le forum Agents de placement/Fenêtres
    Réponses: 12
    Dernier message: 26/06/2012, 15h15
  3. Regrouper des variables dans une nouvelle classe
    Par saraharas dans le forum SAS Base
    Réponses: 2
    Dernier message: 13/06/2011, 15h27
  4. Pouvoir gérer les actions des boutons dans une classe
    Par Cyborg289 dans le forum Composants
    Réponses: 2
    Dernier message: 08/07/2005, 12h08
  5. fonction récupérant des valeurs dans une fonction popup...
    Par petitsims dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/01/2005, 14h51

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