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

GCC Discussion :

Problème std::list + templates GCC/G++ 4.x


Sujet :

GCC

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 8
    Points : 8
    Points
    8
    Par défaut Problème std::list + templates GCC/G++ 4.x
    Suite de mes problèmes de hier, un autre morceau du code que je dois reprendre (fait sous VisualStudio2005) n'est pas accepté :

    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
     
     
    template<typename T,typename ACTION>
    ACTION *Ia<T,ACTION>::createTree(GeneralTree<Situation<T,ACTION> > *pere, int profondeur)
    {
        if (pere == 0 )
            return 0;
     
        pere->getData().setValue(valoriserSituation(pere->getData()));
     
        if ( tree == 0 )
            tree=pere;
        list<Situation<T,ACTION> > *listeSituations= this.creerSituations(pere->getData());
     
        list< Situation<T,ACTION> >::iterator it;                           // BLAM : Erreur !!!!
        for (it=listeSituations->begin();it != listeSituations->end();it++)
            pere->addChild(new GeneralTree<Situation<T,ACTION> >(*it));
     
        if ( profondeur > 1 )
            for ( pere->start(); pere->isValid(); pere->forth())
                createTree(pere->child(),profondeur-1);
        else
            for ( pere->start() ; pere->isValid() ; pere->forth() )
                pere->child()->getData().setValue(noterSituation(pere->child()->getData()));
     
     
        return pere->getData()->getAction();
    }
    Si quelqu'un a une idée de ce qui se passe ....

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    C'est quoi l'erreur....

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    la voila

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ia.h: In member function «ACTION* Ia<T, ACTION>::createTree(GeneralTree<Situation<T, ACTION> >*, int)»:
    ia.h:116: erreur: expected `;' before «it»
    ia.h:117: erreur: «it» was not declared in this scope

  4. #4
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    normal, il ne sait pas que
    list< Situation<T,ACTION> >::iterator
    est un type. Il faut le lui dire avec typename.
    Voir la http://c.developpez.com/faq/cpp/?pag...LATES_typename

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 8
    Points : 8
    Points
    8
    Par défaut
    Mouarf, c'est ça ...
    Les compilateurs qui font tous leur truc a leur sauce, c'est pas super ...

  6. #6
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Non, ce n'est pas qu'ils font tout à leur sauce ! C'est le standard.
    Au moment de la lecture du code templaté par n'importe quel compilateur, comment peut-il savoir que le std::vector<>::iterator est un type plutôt qu'une variable ? Il ne peut pas, il n'est pas encore à la phase d'instanciation où il peut vérifier que c'est bien un type - c'est pourquoi typename est interdit dans une fonction normale et dans une classe normale -.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/07/2008, 17h46
  2. Problème de class template et std::map
    Par bathof dans le forum Langage
    Réponses: 2
    Dernier message: 31/07/2007, 22h18
  3. Réponses: 20
    Dernier message: 22/03/2006, 14h00
  4. [std::list][find_if] problème avec mes foncteurs
    Par n!co dans le forum SL & STL
    Réponses: 12
    Dernier message: 04/02/2005, 11h56

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