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

Langage C++ Discussion :

Problème la surcharge ou le retour de référence vers un template


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Avatar de ProgVal
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 636
    Par défaut Problème la surcharge ou le retour de référence vers un template
    Bonjour,

    J'ai le code suivant, avec les erreurs mises en commentaires plus visibles :
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    template <class T> //contained type
    class stack { //base of container
    //...
    public:
     
        stack(); //default constructor
        stack(T); //best constructor(with a data)
        ~stack(); //destructor
     
        int size() {return num;} //get stack size
     
        int push_back(T); //add at end
        int push_front(T); //add at start
        int push_in(T,int); //add in
     
        &T get_back(); //get last element
    //////////////////////////////////////////////////////////////////
    //erreur de syntaxe : absence de ';' avant l'identificateur 'get_back'
    //pécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas en charge int par défaut
    //idem que la précedente
    //AVERTISSEMENT: 'get_back' : type de retour manquant ; fonction membre retournant 'int' prise par défaut
    //////////////////////////////////////////////////////////////////
     
        &T get_front(); //get first element
    //////////////////////////////////////////////////////////////////
    //Les mêmes erreurs que pour get_back
    //////////////////////////////////////////////////////////////////
    //...
    };
    &T stack::get_back(int n) { //get n-th element before end
        if (n>num) {
            erreur error;
            error.msg="Out of range"
            error.errornum=2;
            throw (error);
        }
        contain *ptr;
        ptr=dernier;
        for (int i=0;i<n;i++)
            ptr=ptr-precedent;
        return &ptr;
    }
     
    &T stack::get_front(int n) {//get n-th element next start
        if (n>num) {
            erreur error;
            error.msg="Out of range";
            error.errornum=2;
            throw (error);
        }
        contain *ptr;
        ptr=premier;
        for (int i=0;i<n;i++)
            ptr=ptr->suivant;
        return &ptr;
    }
    Note: bien que les commentaires soient en Anglais, c'est bien moi qui les ai mis et qui ai fait le programme.

    Merci d'avance,
    ProgVal

  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,

    Qaund tu veux déclarer une référence sur un objet, c'est Type& et non &Type qu'il faut écrire

    Ceci dit, une stack, c'est une pile, et une pile, c'est typiquement un système LIFO: le dernier élément placé est toujours le premier à sortir, et on n'a pas accès aux éléments précédent tant que l'on n'a pas retiré le dernier élément ajouté

    L'idée est donc que tu ne peux ajouter un élément qu'après le dernier existant, et que tu ne peux accéder qu'au dernier élément.

    Si tu veux pouvoir accéder autrement, ce n'est plus une pile, mais une file (si c'est exclusivement le système FIFO: le premier entré est le premier sorti) ou une liste (si tu peux accéder à n'importe quel élément ou si tu peux en insérer n'importe où)

    Ce n'est qu'une question de sémantique, je l'admets, mais elle est importante pour s'assurer que tout le monde parle bien de la même chose
    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
    Membre très actif
    Avatar de ProgVal
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 636
    Par défaut
    Merci beaucoup!

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

Discussions similaires

  1. retour par référence de l'opérateur ++
    Par BigNic dans le forum C++
    Réponses: 4
    Dernier message: 02/08/2006, 18h35
  2. problème de surcharge
    Par bountykiller dans le forum C++
    Réponses: 8
    Dernier message: 09/10/2005, 20h45
  3. Petit probléme de surcharge d'opérateur .
    Par Clad3 dans le forum C++
    Réponses: 20
    Dernier message: 11/04/2005, 20h15
  4. Problème de surcharge d'opérateurs
    Par Hell dans le forum C++
    Réponses: 17
    Dernier message: 17/01/2005, 16h01
  5. Réponses: 2
    Dernier message: 25/07/2004, 23h24

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