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

Langage C++ Discussion :

Définition de template imbriqué avec stlport


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4
    Par défaut Définition de template imbriqué avec stlport
    Bonjour à tous,

    Je viens vers vous, car, je n'arrive pas à trouver la solution à mon problème.

    Pour info, je développe en C++ avec Visual 6.0 (ne riez pas je suis obligé :-)) et j'utilise la STLPort (version 4.1.2 donc pas la dernière, je sais).

    Donc voici le problème : je n'arrive pas à compiler le code ci-dessous

    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
     
    int main(void){
     
    	map<int,pair<char*,int*>> test;
     
    	char a = 0;
    	int b = 2;
     
    	pair<char*,int*> pair;
     
    	pair.first = &a;
    	pair.second = &b;
     
    	test.insert(map<int,pairDef>::value_type(15645,pair));
     
    	return 0; 
    }
    J'obtiens les message ci-dessous de la part du compilateur à ligne de "map<int,pair<char*,int*>> test;" :

    error C2146: syntax error : missing ',' before identifier 'test'
    Alors que si j'utilise un bon vieux typedef tout passe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    int main(void){
    	typedef pair<char*,int*> pairDef;
    	map<int,pairDef> test;
    	char a = 0;
    	int b = 2;
    	pair<char*,int*> pair;
    	pair.first = &a;
    	pair.second = &b;
    	test.insert(map<int,pairDef>::value_type(15645,pair));
    	return 0; 
    }

    Comment faire pour compiler la première version du code, car, en vrais j'utilise ce code dans un .h et je ne veux pas déclarer de typedef dans ce .h ?

    Merci d'avance pour ceux qui dédaigneront m'accorder quelques secondes ou minutes de leur temps précieux ;-)

  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 insérer un espace entre les deux >, sinon le compilo croit trouver un opérateur >>.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4
    Par défaut
    Rapide, simple et efficace, faites gaffe je risque de revenir :-)

    En tout merci pour la réponse !

  4. #4
    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
    N'oublie pas de cliquer sur

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4
    Par défaut
    J'ai parlé trop vite :-), voici la modif que j'ai faite :

    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
     
     
    void main(){
    	map<int,pair<char*,int*> > test;
     
    	char a = 0;
    	int b = 2;
     
    	pair<char*,int*> pair;
    	pair.first = &a;
    	pair.second = &b
     
    	test.insert(map<int,pair<char*,int*> >::value_type(15645,pair));
     
    	return 0; 
    }
    Maintenant, le compilo m'envoie une erreur de compil à ligne : "test.insert(map<int,pair<char*,int*> >::value_type(15645,pair));"

    error C2062: type 'char' unexpected
    Any idea ??

  6. #6
    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
    Sur quelle ligne ?

    Sinon, tu appelles pair une variable de type pair. Pas terrible pour le compilo

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4
    Par défaut
    Ayé, désolé pour l'erreur de la double utilisation de pair. Pour ceux qui aiment les films avec happy end, voici la réponse :

    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
     
    int main(void){
     
    	map<int,pair<char*,int*> > test;
     
    	char a = 0;
    	int b = 2;
     
    	pair<char*,int*> pair2;
    	pair2.first = &a;
    	pair2.second = &b;
     
    	test.insert(map<int,pair<char*,int*> >::value_type(15645,pair2));
    	return 0; 
    }
    Merci pour ton aide Laurent !

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

Discussions similaires

  1. prb SELCT imbriqué avec TRANSFORM
    Par davidso dans le forum Langage SQL
    Réponses: 1
    Dernier message: 23/01/2006, 13h50
  2. [DB2] Requête imbriquée avec opérateur IN
    Par JFDelges dans le forum Langage SQL
    Réponses: 23
    Dernier message: 21/12/2005, 11h27
  3. Utilisation de template word avec ADO en VBA
    Par 24 faubourg dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 08/12/2005, 19h41
  4. [Débutant]Boucle imbriquée avec des bornes différentes
    Par Hayato dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 29/08/2005, 16h23
  5. [XSL]boucle imbriquée avec condition
    Par kor dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 11/01/2005, 14h19

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