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 :

Liste chainee avec le mot cle THIS


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 15
    Par défaut Liste chainee avec le mot cle THIS
    Bonjour,

    Est-ce que quelqu'un pourrait m'aider a trouver une piste sur la maniere d'utiliser le mot cle THIS dans une liste chainee des objets de meme nature ?
    Je suis debutant en C++ et ceci fait parti d'un de mes exercices personnels.

    Merci d'avance de votre soutien.

    Mutkas

  2. #2
    Inactif  


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

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Bonjour

    En l'état, je comprend pas la question. Pourrais tu expliquer et/ou donner du code de ce que tu souhaites faire.
    Qu'as tu compris sur ce sur fait this ?

  3. #3
    Membre averti
    Inscrit en
    Octobre 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 15
    Par défaut
    Bonjour,

    Je lisais dans un livre qu'on peut utiliser THIS de maniere indispensable dans la gestion d'une liste chaînée d'objets de même nature : pour écrire une fonction membre insérant un nouvel objet (supposé transmis en argument implicite), il faudra bien placer son adresse dans l'objet précédent de la liste.

    Alors je voulais avoir une reference a ce sujet car je ne vois pas tres bien comment ca se passe.

    Merci.

    Mutkas

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 484
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 484
    Par défaut
    Hello,

    Considérons ce code :

    Code C++ : 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
     
    class Objet
    {
        public:
        void Fonction (void);
     
        int x;
        int y;
    };
     
    void Object::Fonction (void)
    {
       x++;
       y++;
    }
     
    int main(void)
    {
        Objet   a,b;
     
        a.Fonction();
        b.Fonction();
     
        return 0;
    }

    Le premier appel à Fonction() va modifier les variables membres « x » et « y » de « a », et le second appel les variables membres de « b ». Ce ne sont pas du tout les mêmes mais, pourtant, à aucun moment on ne fait le distingo dans le code de la fonction. Cette fonction est donc capable implicitement de savoir sur quel objet elle travaille. Ceci veut dire que toutes les fonctions membres d'une classe reçoivent de manière transparente un pointeur vers l'instance de l'objet concerné sur laquelle on travaille.

    Ce pointeur s'appelle « this » (ce qui veut dire « celui-ci » en anglais).

    Note qu'il s'agit bien d'un pointeur et pas d'une référence. On pourrait retomber sur nos pattes dans les deux cas mais le savoir d'emblée évite de se casser la tête.

    La plupart du temps, le principe objet consiste justement à ne pas s'en soucier, mais il est des cas où il est utile de savoir exactement où on se trouve, ainsi que de pouvoir désigner en particulier l'instance qui nous concerne, notamment lorsqu'on reçoit en arguments de fonctions des variables qui portent le même nom que les membres de ta classe.

    Dans le cas d'une liste chaînée. Tu as besoin de traiter :
    1. Le maillon ;
    2. Le maillon précédent ;
    3. Le maillon suivant.


    Lorsque tu vas insérer ton maillon au milieu de ta liste, tu vas en fait :

    1. Copier le champ « next » du maillon précédent dans le tien ;
    2. Remplacer l'adresse de ce champ par l'adresse de ton maillon.


    Et pour remplir ce dernier point, tu as besoin de connaître l'adresse en mémoire de l'objet que tu veux insérer. Si tu demandes à ton maillon de s'insérer tout seul, autrement dit, si tu appelles une fonction membre dudit maillon pour mener à bien cette opération, tu auras besoin de this pour connaître cette adresse.

Discussions similaires

  1. Liste chainee avec index/indices
    Par eagl1 dans le forum C++
    Réponses: 19
    Dernier message: 20/10/2009, 21h12
  2. Gestion des documents avec des mots cles pour la recherche
    Par padej450 dans le forum SharePoint
    Réponses: 1
    Dernier message: 07/05/2009, 17h11
  3. [Conception] Listes chainées avec plusieurs champs
    Par Nasky dans le forum Général Java
    Réponses: 6
    Dernier message: 11/03/2006, 23h52
  4. Probleme avec les double Liste chainees
    Par BernardT dans le forum Langage
    Réponses: 1
    Dernier message: 12/07/2005, 17h22
  5. [LG]Listes chainées avec pointeur
    Par PaowZ dans le forum Langage
    Réponses: 2
    Dernier message: 17/02/2004, 19h49

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