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 :

Iterateur sur classe imbriquée


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Madagascar

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

    Informations forums :
    Inscription : Février 2020
    Messages : 2
    Par défaut Iterateur sur classe imbriquée
    salut à tous, je suis nouveau et débutant. J' ai fait un projet sur c++, il possède 3 classes:box, package, truckload. J' ai fait ensuite une liste chaînée sur les box et ensuite imbriqué package dans truckload. J' ai mis ensuite un itérateur à l' interieur de truckload pour le parcourir, mais il y a érreur lors de la compilation. Je vous donne le fichier, je n' arrive pas a trouvé la solution.Nom : Capture d’écran (8).png
Affichages : 289
Taille : 181,2 Ko.Le compilateur dit que getfirstBox() n'est pas fonction membre.

  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, et bienvenue sur le forum.

    Avant toute chose, pourrais tu nous faire un copier/coller du code des différents fichier en utilisant la balise [ CODE ] (sans les espace) au début et la balise [ / CODE ] (sans les espaces, toujours) à la fin (ces deux balises peuvent être mises automatiquement en cliquant sur le bouton en forme de # qui se trouve juste au dessus de la zone d'édition, sur la droite).

    Ce sera beaucoup plus facile que d'utiliser une image de ton éditeur de texte, parce que cela nous permettra de le sélectionner avant de le copier de notre coté, alors qu'avec l'image, nous serions obligés de le copier "caractère par caractère".

    D'ailleurs, il est également possible -- a priori -- de copier les messages émis par le compilateur dans la zone dans laquelle ils apparaissent. Si tu pouvais nous copier / coller tous les messages émis par le compilateur, cela nous permettrait de savoir "plus facilement" pourquoi il se met à t'engueuler

    De même, tu devrais -- pour ta propre facilité -- t'habituer à respecter les mêmes règles d'indentation dans tous tes fichiers, surtout quand ce sont plusieurs fichiers appartenant à un même projet.

    Et tu devrais, tant qu'à faire, choisir une politique très stricte pour l'indentation, et t'y tenir.

    L'indentation dans truckload.h est franchement pas mal entre la ligne 12 et la ligne 34, parce que cette manière de présenter le code nous permet de repérer plus facilement les groupes qui se forment naturellement:

    On remarque, par exemple, très facilement que les données et les fonctions membres de ta classe Package (pBox, pNext, constructeur et destructeur) se trouvent dans l'accessibilité privée de la classe, avec toute les restrictions que cela peut impliquer.

    Par contre, les lignes 35 et 36 ne respectent pas les mêmes règles que les lignes qui précèdent.

    Si ce n'est pas *** catastrophique ***, c'est en tout cas *** dommage ***, parce que cela n'aurait pas pris plus de temps, et cela aurait assuré la cohésion dans ton code, cela n'aurait pas donné une image dans laquelle on a l'impression d'avoir une tache au beau milieu.

    Par contre, c'est catastrophique dans le fichier Box.h, car dans ce fichier, il n'y a absolument aucune indentation, si bien que l'on ne sait pas dire (à moins de lire l'ensemble du fichier) ce qui fait partie de quel groupe.

    Si je prend "au hasard" la ligne 22 de ce fichier, par exemple, il faut vraiment que je commence à être très attentif à chaque ligne qui précède pour savoir que je me trouve dans la fonction compare et chaque ligne qui suit pour savoir où cette fonction s'arrête.

    Si cette fonction avait pris la forme de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int compare(Box const & box) const
    {
        if(volume() < box.volume())
            return -1;
        if(volume == box.volume())
            return 0;
        return 1;
    }
    les choses auraient été beaucoup plus claires, car on voit directement le début et la fin de la fonction, et on voit même directement ce qui doit être fait en fonction des différentes conditions

    Enfin, chaque accolade ouvrante doit disposer de sa consoeur fermante, et, s'il se peut que l'accolade fermante correspondant à celle qui est ouverte à la ligne 11 de trucload.h n'est peut-être simplement pas visible, on a l'impression qu'elle manque purement et simplement (tu comprends pourquoi il vaut mieux donner le code écrit plutôt qu'une impression écran )

    Donc, pour répondre à ta question, les fonction getFirstBox et getNextBox appartiennent, en l'état à la classe Truckload::iterator alors que, sauf erreur de ma part, tu voudrais qu'elle appartiennent à... la classe Truckload.
    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
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Madagascar

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

    Informations forums :
    Inscription : Février 2020
    Messages : 2
    Par défaut
    Merci pour ta réponse koala01. A la prochaine fois, je copierai le code, je ne le savais pas. J' ai suivi ton conseil et c'est resolu!!!Merci

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

Discussions similaires

  1. Classe imbriquée - Iterateur
    Par Schnapse dans le forum Débuter
    Réponses: 4
    Dernier message: 12/04/2013, 22h34
  2. Intérêt des classes imbriquées ?
    Par elitost dans le forum Langage
    Réponses: 5
    Dernier message: 21/10/2005, 09h30
  3. syntaxe css lien sur classe
    Par mussara dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 03/08/2005, 09h52
  4. [C#] Evenement sur classe virtual
    Par papouAlain dans le forum Windows Forms
    Réponses: 26
    Dernier message: 11/01/2005, 11h45
  5. [VB.NET] Instanciation objet (sur class perso.)
    Par DaxTaz dans le forum ASP.NET
    Réponses: 4
    Dernier message: 03/05/2004, 11h07

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