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 :

[Question] Il me semble avoir vu une erreur dans un tuto


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 29
    Points : 25
    Points
    25
    Par défaut [Question] Il me semble avoir vu une erreur dans un tuto
    Bonjour,

    Je me suis donc tournés vers developpez.net, et j'ai commencé à lire "Apprendre le langage C++" de Henri Garreta, j'en suis au IV-B-2.
    Quand j'ai vu ceci :

    Exemple d'emploi d'un tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Tableau t(taille max souhaitée);
    ...
    t[i] = x;
    etc.
    Emploi d'une pile :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Pile p(taille max souhaitée);
    p[i] = x; 				// ERREUR : l'opérateur [] est inaccessible
    p.empiler(x); 			// Oui
    ...
    cout << t[i]; 			// ERREUR : l'opérateur [] est inaccessible
    cout << p.depiler(); 	// Oui
    etc.
    La définition des classes sont :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    class Tableau {
     
            int *tab;
            int maxTab;
     
        protected:
     
            int nbrAcces;
     
        public:
     
            Tableau(int t) {
                nbrAcces = 0;
                tab = new int[maxTab = t];
            }
     
            int &operator[](int i) {
                contrôle de la valeur de i
                nbrAcces++;
                return tab[i];
            }
    };
     
    class Pile : private Tableau {
     
            int niveau;
     
        public:
     
            Pile(int t) : Tableau(t), niveau(0) { }
     
            bool vide() {
                nbrAcces++; return niveau == 0;
            }
     
            void empiler(int x) {
                (*this)[niveau++] = x;
            }
     
            int depiler() {
                return (*this)[--niveau];
            }
     
    };
    Pourquoi la ligne "cout << t[i];" est incorrect alors que l'opérateur d'addition est déclaré public ?
    A moins que les t[i] ne correspondent pas à la même chose dans les deux exemples différents, mais dans ce cas, d'où vient le t[i] du 2e exemple ?

    Merci d'avance pour vos réponses

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 137
    Points : 33 098
    Points
    33 098
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    je pense que le t[i] est en fait un p[i] au vu du commentaire et du contexte de l'exemple.
    Et effectivement Pile ne possède pas d'opérateur [], donc cette écriture est interdite (bug à la compilation).
    Pour t[i] elle est correcte, l'opérateur [] est défini.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    Ah oui, j'y avais pas pensé que l'erreur était p au lieu de t .
    Ca explique tout
    Merci !

    PS : du coup, comment fait-on pour corriger l'erreur ? Il faut prévenir un modo, je suppose.

  4. #4
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 617
    Points
    15 617
    Par défaut
    Citation Envoyé par loukiluk Voir le message
    Ah oui, j'y avais pas pensé que l'erreur était p au lieu de t .
    Ca explique tout
    Merci !

    PS : du coup, comment fait-on pour corriger l'erreur ? Il faut prévenir un modo, je suppose.
    Merci d'avoir signalé le problème. Je vais corriger le problème (dès que j'aurais trouvé comment faire )

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2011
    Messages : 29
    Points : 25
    Points
    25
    Par défaut
    De rien et merci à vous deux

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

Discussions similaires

  1. Y a-t-il une erreur dans cette question ?
    Par Ennydra dans le forum Général Java
    Réponses: 2
    Dernier message: 17/12/2014, 12h56
  2. Continuer un traitement après avoir relevé une erreur
    Par Naruto_kun dans le forum PL/SQL
    Réponses: 1
    Dernier message: 20/01/2010, 15h08
  3. Réponses: 6
    Dernier message: 22/01/2008, 22h06
  4. Comment détecter une erreur dans un process
    Par chuckboy dans le forum MFC
    Réponses: 3
    Dernier message: 25/10/2005, 11h40
  5. Comment lancer une erreur dans une procédure stockée
    Par borgfabr dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/05/2005, 18h06

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