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 :

Probleme operateur classe iterateur perso


Sujet :

C++

  1. #1
    Membre éprouvé
    Avatar de SOAD08
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 101
    Par défaut Probleme operateur classe iterateur perso
    Bonjour tout le monde,

    Je suis entrain de coder une classe chaine minimaliste ainsi que la classe interne iterateur qui va avec, mais j'ai un gros problème :

    j'ai créé l'operateur unaire * dans ma classe iterateur, ce qui me permet de faire par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    chaine::iterateur it(unechaine.debut());
    char a = *it;
    std::cout << a;
    mon problème est que je ne vois pas du tout comment faire cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char a = 'e';
    (*it) = a;
    Quelqu'un peut-il m'eclairer, car ma classe iterateur perd toute son utilité sans cela.

    Merci d'avance
    www.cppreference.com ==> A lire pour vos problèmes touchant à la STL
    www.php.net ==> A lire avant de demander le fonctionnement d'une fonction PHP

    Alliance developpez Muzgo

  2. #2
    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
    Il faut faire deux versions de l'opérateur * pour ton itérateur : une pour l'accès en lecture et une pour l'accès en écriture.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class chaine
    {
        class iterateur
        {
            char& operator *();
            char operator *() const;
        };
    };
    Ainsi, *it pourra renvoyer une référence ce qui permettra à l'affectation *it = a de bien modifier la valeur pointée par l'itérateur.

    Tant qu'à refaire la bibliothèque standard tu peux t'en inspirer (en l'occurence ici aller regarder le code de std::basic_string), lorsque tu as ce genre de problème par exemple.

  3. #3
    Membre éprouvé
    Avatar de SOAD08
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    101
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 101
    Par défaut
    Je te remercie, ça marche parfaitement, pas besoin de chercher plus loin
    www.cppreference.com ==> A lire pour vos problèmes touchant à la STL
    www.php.net ==> A lire avant de demander le fonctionnement d'une fonction PHP

    Alliance developpez Muzgo

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

Discussions similaires

  1. [Super debutant] probleme de "classes"
    Par frett dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 26/03/2005, 12h43
  2. Problème de "Class"
    Par Mr.KisS dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 01/10/2004, 23h23
  3. probleme compilation classe avec Borland c++ compiler 5.5
    Par softblue dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 17/06/2004, 15h16
  4. problème de classe d'association
    Par Nip dans le forum Diagrammes de Classes
    Réponses: 8
    Dernier message: 08/06/2004, 16h08
  5. Probleme de classe CComplex
    Par Balls dans le forum MFC
    Réponses: 7
    Dernier message: 13/02/2004, 10h55

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