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 une liste en cours de lecture passée en paramètre


Sujet :

C++

  1. #1
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut iterateur sur une liste en cours de lecture passée en paramètre
    Bonjour,

    Je dois faire une procédure qui traite une liste connue en paramètre qui est déjà ouverte

    l'appel comprend les éléments suivants:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
       CAnalysedWord* pWord
       std::list<CAnalysedWord*>::itWord;
     
       ...
       pWord = *itWord;
       ...
       ...
       AnalyseCurrentList( CAnalysedWord*  pWord....)
       {
          std::list<CAnalysedWord*>::itWord;
          itWord = &pWord;
    mais cette syntaxe qui est le symétrique de l'affectation est refusée par le compilateur.
    Comment initialiser dans la procédure un itérateur avec ce qui est pointé par le pointeur pWord?
    Je serai content d'avoir cette solution. Celui qui me répondra sera

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 071
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 071
    Points : 12 116
    Points
    12 116
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::list<CAnalysedWord*>::itWord;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AnalyseCurrentList( pWord....)
    Où qu'il est le type.

    C'est franchement illisible comme code.
    Je pense qu'en le rendant lisible, vous trouverez la solution.

  3. #3
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut précisions et autres contributions sur le sujet
    J'ai précisé les choses pour conformité avec la compilation. mais ça ne fait pas avancer le schmilblick
    une autre contribution m'a proposé
    itWord = *pWord;
    mon compilateur m'a demandé de caster, ce qui donne
    itWord = (std::list<CAnalysedWord>::iterator) *pWord;
    et là le compilateur me dit transtypage impossible entre iterateur et classe

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 071
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 071
    Points : 12 116
    Points
    12 116
    Par défaut
    Tu m'étonnes que le compilateur ne confonde pas un pointeur et un itérateur, ça n'a rien à voir avec la choucroute.

    Montrez-nous votre code et on pourra peut-être vous aider. Et pas à essayer de blouser le compilateur.

  5. #5
    Débutant
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    1 022
    Détails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 022
    Points : 332
    Points
    332
    Par défaut Effectivement les pointeurs et les itérateurs ne sont pas compatibles
    Bonjour

    Je confirme ton point de vue: il n'est pas possible d'attribuer un pointeur à un itérateur, et donc on arrive à une solution bestiale
    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
     
    itTemp = itWord;
                           if( p2NextWord != NULL && p3NextWord != NULL && p4NextWord != NULL & p5NextWord != NULL)
                           { //7
                              if( p2NextWord->POS != NULL || p3NextWord->POS != NULL || p4NextWord->POS != NULL || p5NextWord->POS == NULL)
                              {
                                 if( p2NextWord->POS != POS_STOPMARK)
                                   if( p3NextWord->POS != POS_STOPMARK)
                                     if( p4NextWord->POS != POS_STOPMARK)
                                        if( p5NextWord->POS != POS_STOPMARK)
                                          if( p2NextWord->POS == POS_PREP || p3NextWord->POS == POS_PREP || p4NextWord->POS == POS_PREP || p5NextWord->POS == POS_PREP)
                                          { //8
                                             // il faut savoir quel est le pointeur qui à rendu le test possible
                                             // il faut développer une procédure qui analyse une list
                                             // de mots tant que le type de syntagme ne change pas
                                             if( p2NextWord->POS == POS_PREP)
                                             { //8
                                                itTemp++;
                                                itTemp++;
                                             }
                                             else if ( p3NextWord->POS == POS_PREP)
                                             {
                                                itTemp++;
                                                itTemp++;
                                                itTemp++;
                                             }
                                             else if ( p4NextWord->POS == POS_PREP)
                                             {
                                                itTemp++;
                                                itTemp++;
                                                itTemp++;
                                                itTemp++;
                                             } //8
                                             else if( p5NextWord->POS == POS_PREP)
                                             {
                                                itTemp++;
                                                itTemp++;
                                                itTemp++;
                                                itTemp++;
                                                itTemp++;
                                             }
                                             //                     le pointeur le pointeur     la position
                                             //                     courrant    sur le receptacle
                                             //                                 actif           de départ
                                             AnalyseCurrentVerbSyntagne( itTemp, pCurrentChunk , Step, DrivingPos, bMarkOngoing, bPivotPending);
                                          }
                              } //8
                           } //7
    avec toutes les dispositions de blindage pour éviter de pointer dans la fin de liste

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

Discussions similaires

  1. Iterateur sur une list
    Par Atharendil dans le forum SL & STL
    Réponses: 17
    Dernier message: 13/01/2008, 15h59
  2. [List] Iterateur sur une liste de type défini
    Par Wookai dans le forum SL & STL
    Réponses: 4
    Dernier message: 12/11/2007, 20h45
  3. pb avec iterateur const sur une list STL
    Par Muetdhiver dans le forum SL & STL
    Réponses: 4
    Dernier message: 14/01/2007, 16h39
  4. Réponses: 3
    Dernier message: 06/09/2006, 18h59
  5. [Débutant][jsp] évènement sur une liste
    Par phoebe dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 14/05/2004, 10h53

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