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 :

Aide pour débugger un programme


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 179
    Par défaut Aide pour débugger un programme
    Hello,

    j'ai écrit plusieurs classes mais dans l'une d'elles, ça me donne des erreurs que je n'arrive pas à résoudre.

    Merci

  2. #2
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Les erreurs, il est toujours préférable de les gérer dans l'ordre dans laquelle elles apparaissent...

    Ne serait-ce parce que l'on assiste souvent à une cascade d'erreurs découlant toutes d'une seule et meme erreur à la base

    Dans ton cas, c'est le fait que tu essaye de mettre une définition là où seule une déclaration est autorisée:

    Le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vector<Personne> listePersonnes(0);
    fait, normalement, deux choses:

    • Déclarer listePersonnes comme étant un vecteur de personne
    • réserver(0) éléments de types personnes "defaut construites" dans le vecteur

    Or, dans une classe, les membre doivent etre déclarés, mais la définition elle-même doit etre effectuée, comme toujours, au sein d'une fonction (souvent le constructeur, parfois au sein d'un accesseur quelconque)

    Supprimes tout simplement la parenthese et le 0 qu'elle contient pour que la déclaration du membre devienne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vector<Personne> listePersonnes;
    et tes problèmes seront résolus:
    • listePersonnes sera correctement déclaré ==>
    • chaque fois que tu voudra accéder à ce membre, le compialteur saura de quoi tu parles
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Et t'as encore oublié un Vacances:: devant augmenter_taille

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    De plus, mettre un using namespace global dans un fichier d'en-tête est une mauvaise pratique, fortement déconseillée.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Par défaut
    est-ce que tu as vraiment besoin d'avoir une taille? Un des intérêt du vector est qu'il est extensible.

    ainsi que pour mettre des Objets Vacancier dans cette liste.
    Vacancier est une classe qui hérite de Personne
    Il faut que tu fasses un vector de pointeurs sur Personne du coup.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    std::vector< Personne* > personnes;
    Ca implique après d'utiliser des new et de ne pas oublier les delete si c'est la classe qui contient le vecteur qui est responsable de la destruction des personnes.

    Dans l'idéal tu utiliserais boost et des smart pointers.

  6. #6
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Ben, il faut surtout voir comment tu prévois de gérer ce vecteur...

    Soit tu te dis "je ne sais jamais combien de vacancier il va falloir que je gere en meme temps", et, dans ce cas, tu ajoute chaque vacancier par un push_back(vacancier)
    Soit tu sais "dés le départ" que tu auras un total de (n) vacanciers, et tu peux demander de redimentionner ton vecteur (par un listePersonnes.resize())

    Mais il faut que tu restes logique avec toi meme:
    La suite d'instructions du genre de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    listePersonnes.resize(100);
    listePersonnes.push_back(vacancier);
    listePersonnes.push_back(vacancier);
    listePersonnes.push_back(vacancier);
    listePersonnes.push_back(vacancier);
    te fait arriver à
    • 100 vacanciers "défaut construit"
    • 4 vacancier "définis" rajoutés
    et donc à un total de ... 104 vacanciers...

    L'avantage des conteneurs de la STL, c'est que, justement, tu n'a pas besoin de t'occuper toi meme de la gestion de la mémoire en suffisance pour maintenir le nombre correct d'éléments...

    L'inconvéniant, c'est que tu dois faire appel au fonctions membres existantes pour placer un élément dans le conteneur...
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  7. #7
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Tu devrais vraiment prendre la peine de relire ton code... La moitié des tes erreurs ne sont que des étourderies.

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/03/2007, 07h54
  2. Besoin d'aide pour un petit programme
    Par Nico35 dans le forum C
    Réponses: 13
    Dernier message: 25/05/2006, 22h21
  3. Aide pour projet de programmation Lycée
    Par Supervince dans le forum C
    Réponses: 26
    Dernier message: 21/05/2006, 15h55
  4. [TP] Aide pour commenter un programme
    Par justind1989 dans le forum Turbo Pascal
    Réponses: 10
    Dernier message: 06/04/2006, 19h11
  5. [TPW][cours]Demande d'aide pour finir un programme
    Par jf dans le forum Turbo Pascal
    Réponses: 21
    Dernier message: 16/06/2003, 18h10

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