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 :

Erreur de declaration (partie 2)


Sujet :

C++

  1. #1
    Membre éclairé Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Par défaut Erreur de declaration (partie 2)
    Bonjour, jai une erreur de compilation dans un fichier et je ne comprend pas trop pourquoi, peut-etre lun de vous peut meclairer (PS: Desole pour les fautes je nai pas reussis a configurer le clavier en francais encore)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    43 virtual void supprimer(X x)
    44 {
    45 std::vector<X>::iterator i=find(lst_X.begin(),lst_X.end(),x);
    46       if ((*i)==x)  lst_X.erase(i);
    47 };
    Lerreur quil me fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    tpl_liste_entite.h: In member function `virtual void TPL_LISTE_ENTITE<X>::supprimer(X)':
    tpl_liste_entite.h:45: error: expected `;' before "i"
    tpl_liste_entite.h:46: error: `i' undeclared (first use this function)
    tpl_liste_entite.h:46: error: (Each undeclared identifier is reported only once for each function it appears in.)
    Ma classe est de type template <class X>

    Je suis sous Unix et jutilise g++, merci!

  2. #2
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut Re: Erreur de declaration
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    43 virtual void supprimer(X x)
    44 {
    45 typename std::vector<X>::iterator i=find(lst_X.begin(),lst_X.end(),x);
    46       if ((*i)==x)  lst_X.erase(i);
    47 };
    Sans avoir un exemple complet, c'est difficile d'etre certain que le changement que je propose resoudra ton probleme (et sans connaitre la version de gcc en plus).

  3. #3
    Membre éclairé Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Par défaut
    Je crois que c<est la version 2, mais comment en etre sur??

  4. #4
    Membre éclairé Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Par défaut
    Ca fonctionne avec typename, peux tu mexpliquer un peu lutilite du typename ici? Merci

  5. #5
    Membre émérite

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Par défaut
    Il sert à définir que iterator est un type qui est définit à l'intérieur de std::vector<X>, car avec les template le compilateur ne pourrait pas en être sûr.

    Voir la : http://c.developpez.com/faq/cpp/?pag...LATES_typename

  6. #6
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par vdumont
    Je crois que c<est la version 2, mais comment en etre sur??
    gcc --version

    Je doute que ce soit une version 2.x pour deux raisons: c'est tres vieux d'une part, il n'avait pas besoin de typename d'autre part.

  7. #7
    Membre éclairé Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Par défaut
    Ta raison jetais dans les patates, cest 3.4.2. Merci enormement a vous 2

  8. #8
    Membre éclairé Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Par défaut
    Merde ca me fait la meme chose dans un autre fichier

    cette fois ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #include <map>
     
     
    template <class X>
    class TPL_MAP_ENTITE
    {
    // ...
    private:
    typename std::map<unsigned long,X,less<unsigned long> > lst_X;
    };

    GCC me dit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    tpl_map_entite.h:99: error: `less' was not declared in this scope
    tpl_map_entite.h:99: error: missing `>' to terminate the template argument list
    tpl_map_entite.h:99: error: template argument 3 is invalid
    tpl_map_entite.h:99: error: expected unqualified-id before '>' token

  9. #9
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    std::less à la place de less?

  10. #10
    Membre éclairé Avatar de vdumont
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    510
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 510
    Par défaut
    Tes un GENIE! Permet moi de tembrasser partout!

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

Discussions similaires

  1. Erreur "Must declare the scalar variable "@id"
    Par Devlin111 dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 15/03/2012, 12h26
  2. [2.x] Erreur sur la partie affichage du message "'Mon premier message'"
    Par semassounad dans le forum Symfony
    Réponses: 30
    Dernier message: 18/07/2011, 13h49
  3. jsp : erreur dans une partie de code non executée
    Par julien20vt dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 04/05/2010, 10h00
  4. Réponses: 1
    Dernier message: 12/06/2008, 18h03
  5. erreur à la declaration
    Par BernardT dans le forum C++
    Réponses: 3
    Dernier message: 24/01/2007, 20h17

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