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

SL & STL C++ Discussion :

Probleme avec STL et templates.


Sujet :

SL & STL C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 10
    Points : 8
    Points
    8
    Par défaut Probleme avec STL et templates.
    Bonjour,
    le code ultra simple suivant (c'est une map avec une clef en paramètre de template)
    => compile et fonctionne sous cppbuilder,
    => ne compile pas sous cygwin (g++) !

    g++ ne compile pas l'iterator MAPTYPE::iterator (effectivement le paramètre MAPTYPE n'est pas défini à ce stade de la compilation)

    Mais je ne comprends pas pourquoi cela ne passe pas !

    Quelqu'un aurait il quelques lumières la dessus ?

    Merci.



    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    #include <stdio.h>
    #include <map>
     
    template <typename MAPTYPE, typename THEKEYTYPE>
    class TemplateClass
    {
    public:
       MAPTYPE data;
     
    	int  update (THEKEYTYPE const &key, char  value);
    };
     
    /**
     * Met a jour la clef key avec la valeur value
     * @param key
     * @param value
     * @return 0 si maj non necessaire, 1 si maj faite, -1 si creation dans la table
     */
    template <typename MAPTYPE, typename THEKEYTYPE>
    int  TemplateClass<MAPTYPE,THEKEYTYPE>::update(THEKEYTYPE const &key, char value)
    {
       MAPTYPE::iterator p = data.find (key);
       if (p != data.end())
       {
          if (p->second == value)
             return 0;
          else
          {
             p->second = value;
             return 1;
          }
       }
       else
       {
          data[key] = value;
          return -1;
       }
    }
     
    int main(int argc, char* argv[])
    {
       TemplateClass<std::map<int,char>, int> myMap;
       printf ("Avec clef int\n");
       printf ("1 -> %d (valeur creee, affiche, vaut -1)\n", myMap.update (10, 1));
       printf ("2 -> %d (une valeur memorisee, non changee vaut 0)\n", myMap.update (10, 1));
       printf ("3 -> %d (valeur mise a jour vaut 1)\n", myMap.update (10, 3));
       printf ("4 -> %d (valeur creee, affiche, vaut -1)\n", myMap.update (11, 2));
     
       TemplateClass<std::map<std::string,char>, std::string> myMapL;
       printf ("Avec clef std::string ...\n");
       printf ("1 -> %d (valeur creee, affiche, vaut -1)\n", myMapL.update ("toto", 1));
       printf ("2 -> %d (une valeur memorisee, non changee vaut 0)\n", myMapL.update ("toto", 1));
       printf ("3 -> %d (valeur mise a jour vaut 1)\n", myMapL.update ("toto", 3));
       printf ("4 -> %d (valeur creee, affiche -1)\n", myMapL.update ("bazar", 2));
     
       fgetc (stdin);
       return 0;
    }

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 10
    Points : 8
    Points
    8
    Par défaut pb résolu !
    En fait il manque le mot clef typename devant la declaration de l'iterator
    (et l'include <string> pour que le std::string compile)
    Désolé pour ce post un peu bête.

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

Discussions similaires

  1. Problemes avec les Parametres template
    Par hardcpp dans le forum C#
    Réponses: 4
    Dernier message: 07/08/2012, 05h32
  2. problem avec STL
    Par lachose dans le forum VC++ .NET
    Réponses: 2
    Dernier message: 03/04/2007, 18h12
  3. C++ - Probleme avec structure et template
    Par vdumont dans le forum Langage
    Réponses: 3
    Dernier message: 21/03/2006, 15h32
  4. Probleme avec une class template
    Par lenectar dans le forum Langage
    Réponses: 2
    Dernier message: 01/03/2006, 10h49
  5. Probleme avec les templates
    Par TeC_MaN dans le forum C++
    Réponses: 2
    Dernier message: 08/01/2006, 14h53

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