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 :

Problème sort et template


Sujet :

Langage C++

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Par défaut Problème sort et template
    Bonjour !

    j'ai un problème avec l'utilisation de templates associées à l'algorithme sort d'un vector. J'ai une structure template

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    template <class Key_Type, class Data_Type> struct proj 
    { 
       proj(Key_Type i, Data_Type s) : valeur(i), ident(s) {} 
     
       Key_Type valeur; 
       Data_Type ident; 
    };
    et une fonction template

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    template <class Key_Type, class Data_Type> bool sort_cles(const proj<Key_Type,Data_Type>& a1, const proj<Key_Type,Data_Type>& a2) 
    { 
       return a1.valeur < a2.valeur; 
    }
    que je veux utiliser à l'intérieur d'une classe elle_même template pour réaliser un sort sur un vecteur de structure proj

    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
     
    using namespace std;
    template <class Key_Type, class Data_Type> class classe_template
    {
    public:
     
    void fonction();
    };
     
    template<Key_Type,Data_Type>
    void classe_template::fonction(){
     
    vector<proj<Key_Type,Data_Type>> _map2; 
    _map2.push_back(proj<Key_Type,Data_Type>(0.25, 2)); 
    _map2.push_back(proj<Key_Type,Data_Type>(5057.056, 6));
    _map2.push_back(proj<Key_Type,Data_Type>(2.47527, 3));
    _map2.push_back(proj<Key_Type,Data_Type>(0.247527, 1));
     
    sort(_map2.begin(), _map2.end(), sort_cles<Key_Type,Data_Type>);
    }
    Cependant cela ne compile pas. Il me renvoie à une erreur dans xutility??
    (c:\program files\microsoft visual studio 8\vc\include\xutility(323) : error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas en charge int par défaut
    1> c:\program files\microsoft visual studio 8\vc\include\algorithm(2822) : voir la référence à l'instanciation de la fonction modèle 'bool std::_Debug_lt_pred<bool(__cdecl *)(const proj<Key_Type,Data_Type> &,const proj<Key_Type,Data_Type> &),proj<Key_Type,Data_Type>,proj<Key_Type,Data_Type>>(_Pr,_Ty1 &,_Ty2 &,const wchar_t *,unsigned int)' en cours de compilation
    1> with
    1> [ ) et ça continue
    où il manquerait une spécification de type. La fonction sort_cles seule fonctionne. Je ne vois pas trop d'où cela peut venir.

    Merci pour votre aide.

  2. #2
    Membre Expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Par défaut
    Salut,

    Il vaut mieux utiliser un foncteur que tu définirais ainsi (je te garantis pas que ce soit exempt d'erreur aussi :s):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    template <class Key_Type, class Data_Type>
    struct SortCles : public binary_function<proj<Key_Type,Data_Type>, proj<Key_Type,Data_Type>, bool>
    {
       bool operator()(proj<Key_Type,Data_Type> a1, proj<Key_Type,Data_Type> a2) 
       { 
          return a1.valeur < a2.valeur; 
       }
    };
    Et après tu appelles sort en lui filant un objet de ce type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sort(_map2.begin(), _map2.end(), SortCles<Key_Type,Data_Type>());

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Par défaut
    Merci de ta réponse !

    J'avais déja essayé avec un foncteur pas écrit exactement pareil mais bon... La compilation me donne exactement les même erreurs. Merci quand même.

  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
    On pourrait voir le message d'erreur complet ?
    Est-ce que tu peux fournir un code minimal mais complet qui reproduit le problème ?

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Salut,

    Citation Envoyé par kiololl
    spécificateur de type manquant - int est pris en compte par défaut.
    Ca là, ça signifie que le compilateur ne connait pas le type (il s'agit sans doute de 'proj').
    Il y a bien un include ? Ou le code est dans un seul fichier à la suite ?

    Sinon la définition de classe_template::fonction est incorrecte, ça devrait être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    template<typename Key_Type,typename Data_Type>
    void classe_template<Key_Type,Data_Type>::fonction(){
    ...
    (ou class à la place de typename si tu préfères)

    Quand je colle les bouts de code que tu as donné à la suite dans un fichier (et que je corrige classe_template::fonction) ça compile...

    MAT.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Par défaut Code et erreur
    Oui oui tu as raison j'ai changé la formulation par rapport à mon vrai code et j'ai oublié certaines choses. J'ai donc un code minimal qui reproduit l'erreur.


    le main
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    #include "stdafx.h"
    #include "classe.h"
    #include <set>
    #include <map>
     
     
    int _tmain(int argc, _TCHAR* argv[])
    {
    	classe_template<float,unsigned int>();
    }
    le classe.h
    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
     
    #ifndef __classe__
    #define __classe__
     
     
    #include <cstdio>
    #include <stddef.h>
    #include <stdio.h>
    #include <iostream>
    #include <fstream>
    #include <iomanip>
    #include <stdlib.h>
    #include <ostream>
    #include <time.h>
    #include <math.h>
    #include <map>
    #include <vector>
    #include <set>
    #include <algorithm>
    #include "struct.h"
    using namespace std;
    template <class Key_Type, class Data_Type> class classe_template
    {
    public:
    	classe_template();
    };
     
    template <class Key_Type, class Data_Type>
    classe_template<Key_Type,Data_Type>::classe_template()
    {
    	vector<proj<Key_Type,Data_Type>> _map2;
    	_map2.push_back(proj<Key_Type,Data_Type>(0.25, 2)); 
    	_map2.push_back(proj<Key_Type,Data_Type>(5057.056, 6)); 
    	_map2.push_back(proj<Key_Type,Data_Type>(2.47527, 3));
    	_map2.push_back(proj<Key_Type,Data_Type>(0.247527, 1)); 
    	_map2.push_back(proj<Key_Type,Data_Type>(24.7527, 5)); 
    	_map2.push_back(proj<Key_Type,Data_Type>(24.752, 4));
     
    //  Test de la fonction seule sans le sort. Fonctionne
    	bool test=sort_cles<Key_Type,Data_Type> (proj<Key_Type,Data_Type>(5057.056, 6),proj<Key_Type,Data_Type>(0.247527, 1));
    	test=sort_cles<Key_Type,Data_Type> (proj<Key_Type,Data_Type>(0.247527, 1),proj<Key_Type,Data_Type>(5057.056, 6));
     
    //	sort avec mon foncteur -> erreur de compilation
    //	sort(_map2.begin(), _map2.end(), sort_cles<Key_Type,Data_Type>()); 
     
    //	le même sort mais en utilisant ma fontion et pas un foncteur -> même erreur
    	sort(_map2.begin(), _map2.end(), sort_cles<Key_Type,Data_Type>); 
     
     
    }
    #endif
    et le struct.h
    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
     
    #include <vector> 
    #include <algorithm> 
    #include <iostream> 
    #include <string> 
    #include <set> 
     
    // Définition de notre structure à trier 
     
    template <class Key_Type, class Data_Type> struct proj 
    { 
       proj(Key_Type i, Data_Type s) : valeur(i), ident(s) {} 
     
       Key_Type valeur; 
       Data_Type ident; 
    }; 
     
    // Mon foncteur
    /*
    template <class Key_Type, class Data_Type> struct sort_cles
    { 
       bool operator ()(proj<Key_Type,Data_Type>& a1, proj<Key_Type,Data_Type>& a2) 
       { 
          return a1.valeur < a2.valeur; 
       } 
    }; */
     
    //Ma fonction
     
    template <class Key_Type, class Data_Type> bool sort_cles(const proj<Key_Type,Data_Type>& a1, const proj<Key_Type,Data_Type>& a2) 
    { 
       return a1.valeur < a2.valeur; 
    }
    Voila le message d'erreur que vous devriez normalement avoir :


    1>------ Début de la génération : Projet : temp2, Configuration : Debug Win32 ------
    1>Compilation en cours...
    1>temp.cpp
    1>c:\documents and settings\liib8473\my documents\visual studio 2005\projects\temp2\temp2\classe.h(33) : warning C4305: 'argument' : troncation de 'double' à 'float'
    1> c:\documents and settings\liib8473\my documents\visual studio 2005\projects\temp2\temp2\classe.h(30) : lors de la compilation de la fonction membre '<Inconnu>' de la classe <Inconnu>
    1> c:\documents and settings\liib8473\my documents\visual studio 2005\projects\temp2\temp2\temp.cpp(12) : voir la référence à l'instanciation de la classe modèle 'classe_template<Key_Type,Data_Type>' en cours de compilation
    1> with
    1> [
    1> Key_Type=float,
    1> Data_Type=unsigned int
    1> ]
    1>c:\documents and settings\liib8473\my documents\visual studio 2005\projects\temp2\temp2\classe.h(34) : warning C4305: 'argument' : troncation de 'double' à 'float'
    1>c:\documents and settings\liib8473\my documents\visual studio 2005\projects\temp2\temp2\classe.h(35) : warning C4305: 'argument' : troncation de 'double' à 'float'
    1>c:\documents and settings\liib8473\my documents\visual studio 2005\projects\temp2\temp2\classe.h(36) : warning C4305: 'argument' : troncation de 'double' à 'float'
    1>c:\documents and settings\liib8473\my documents\visual studio 2005\projects\temp2\temp2\classe.h(37) : warning C4305: 'argument' : troncation de 'double' à 'float'
    1>c:\documents and settings\liib8473\my documents\visual studio 2005\projects\temp2\temp2\classe.h(40) : warning C4305: 'argument' : troncation de 'double' à 'float'
    1>c:\documents and settings\liib8473\my documents\visual studio 2005\projects\temp2\temp2\classe.h(40) : warning C4305: 'argument' : troncation de 'double' à 'float'
    1>c:\documents and settings\liib8473\my documents\visual studio 2005\projects\temp2\temp2\classe.h(41) : warning C4305: 'argument' : troncation de 'double' à 'float'
    1>c:\documents and settings\liib8473\my documents\visual studio 2005\projects\temp2\temp2\classe.h(41) : warning C4305: 'argument' : troncation de 'double' à 'float'
    1>c:\program files\microsoft visual studio 8\vc\include\xutility(323) : error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas en charge int par défaut
    1> c:\program files\microsoft visual studio 8\vc\include\algorithm(2822) : voir la référence à l'instanciation de la fonction modèle 'bool std::_Debug_lt_pred<bool(__cdecl *)(const proj<Key_Type,Data_Type> &,const proj<Key_Type,Data_Type> &),proj<Key_Type,Data_Type>,proj<Key_Type,Data_Type>>(_Pr,_Ty1 &,_Ty2 &,const wchar_t *,unsigned int)' en cours de compilation
    1> with
    1> [
    1> Key_Type=float,
    1> Data_Type=unsigned int,
    1> _Pr=bool (__cdecl *)(const proj<float,unsigned int> &,const proj<float,unsigned int> &),
    1> _Ty1=proj<float,unsigned int>,
    1> _Ty2=proj<float,unsigned int>
    1> ]
    1> c:\program files\microsoft visual studio 8\vc\include\algorithm(2879) : voir la référence à l'instanciation de la fonction modèle 'std::pair<_Ty1,_Ty2> std::_Unguarded_partition<_RanIt,bool(__cdecl *)(const proj<Key_Type,Data_Type> &,const proj<Key_Type,Data_Type> &)>(_RanIt,_RanIt,_Pr)' en cours de compilation
    1> with
    1> [
    1> _Ty1=std::_Vector_iterator<proj<float,unsigned int>,std::allocator<proj<float,unsigned int>>>,
    1> _Ty2=std::_Vector_iterator<proj<float,unsigned int>,std::allocator<proj<float,unsigned int>>>,
    1> _RanIt=std::_Vector_iterator<proj<float,unsigned int>,std::allocator<proj<float,unsigned int>>>,
    1> Key_Type=float,
    1> Data_Type=unsigned int,
    1> _Pr=bool (__cdecl *)(const proj<float,unsigned int> &,const proj<float,unsigned int> &)
    1> ]
    1> c:\program files\microsoft visual studio 8\vc\include\algorithm(2903) : voir la référence à l'instanciation de la fonction modèle 'void std::_Sort<std::_Vector_iterator<_Ty,_Alloc>,__w64 int,bool(__cdecl *)(const proj<Key_Type,Data_Type> &,const proj<Key_Type,Data_Type> &)>(_RanIt,_RanIt,_Diff,_Pr)' en cours de compilation
    1> with
    1> [
    1> _Ty=proj<float,unsigned int>,
    1> _Alloc=std::allocator<proj<float,unsigned int>>,
    1> Key_Type=float,
    1> Data_Type=unsigned int,
    1> _RanIt=std::_Vector_iterator<proj<float,unsigned int>,std::allocator<proj<float,unsigned int>>>,
    1> _Diff=__w64 int,
    1> _Pr=bool (__cdecl *)(const proj<float,unsigned int> &,const proj<float,unsigned int> &)
    1> ]
    1> c:\documents and settings\liib8473\my documents\visual studio 2005\projects\temp2\temp2\classe.h(47) : voir la référence à l'instanciation de la fonction modèle 'void std::sort<std::_Vector_iterator<_Ty,_Alloc>,bool(__cdecl *)(const proj<Key_Type,Data_Type> &,const proj<Key_Type,Data_Type> &)>(_RanIt,_RanIt,_Pr)' en cours de compilation
    1> with
    1> [
    1> _Ty=proj<float,unsigned int>,
    1> _Alloc=std::allocator<proj<float,unsigned int>>,
    1> Key_Type=float,
    1> Data_Type=unsigned int,
    1> _RanIt=std::_Vector_iterator<proj<float,unsigned int>,std::allocator<proj<float,unsigned int>>>,
    1> _Pr=bool (__cdecl *)(const proj<float,unsigned int> &,const proj<float,unsigned int> &)
    1> ]
    1> c:\documents and settings\liib8473\my documents\visual studio 2005\projects\temp2\temp2\classe.h(30) : lors de la compilation de la fonction membre '<Inconnu>' de la classe <Inconnu>
    1>c:\program files\microsoft visual studio 8\vc\include\xutility(323) : error C2146: erreur de syntaxe : absence de ')' avant l'identificateur 'bkey_t'
    1>c:\program files\microsoft visual studio 8\vc\include\xutility(323) : error C2065: 'bkey_t' : identificateur non déclaré
    1>c:\program files\microsoft visual studio 8\vc\include\xutility(323) : error C2059: erreur de syntaxe : ')'
    1>c:\program files\microsoft visual studio 8\vc\include\xutility(323) : error C2059: erreur de syntaxe : ')'
    1>c:\program files\microsoft visual studio 8\vc\include\xutility(325) : error C2181: instruction else sans if correspondant non conforme
    1>c:\program files\microsoft visual studio 8\vc\include\xutility(325) : error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas en charge int par défaut
    1>c:\program files\microsoft visual studio 8\vc\include\xutility(325) : error C2146: erreur de syntaxe : absence de ')' avant l'identificateur 'bkey_t'
    1>c:\program files\microsoft visual studio 8\vc\include\xutility(325) : error C2059: erreur de syntaxe : ')'
    1>c:\program files\microsoft visual studio 8\vc\include\xutility(325) : error C2059: erreur de syntaxe : ')'
    1>Le journal de génération a été enregistré à l'emplacement "file://c:\Documents and Settings\liib8473\My Documents\Visual Studio 2005\Projects\temp2\temp2\Debug\BuildLog.htm"
    1>temp2 - 10 erreur(s), 9 avertissement(s)
    ========== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========

  7. #7
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vector<proj<Key_Type,Data_Type>>
    Essaye plutôt ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vector<proj<Key_Type,Data_Type> >

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Par défaut
    Toujours les mêmes erreurs... Je pense que c'est un truc du genre mais impossible de trouver

  9. #9
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Quand je copie tout ça dans un fichier (en mettant le contenu des .h au endroits de leurs inclusions), ça compile.
    Il y a quelques warnings mais aucune erreur.

    Et en release ça donne quoi ?

    Ca doit être une histoire de configuration du projet du coup.
    Dans le log on voit appraître des __w64, c'est voulu ?

    MAT.

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Par défaut
    SI je met tout dans un fichier à la suite comme tu l'as fait, moi non ça compile toujours pas. Donc ouai, ptetr une erreur de config du projet mais j'ai rien touché à la config par défaut. Le __w64 n'est pas voulu. Je sais pas ce que ça veut dire ni comment le changer si c'est la source du problème ?

  11. #11
    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
    SI je met tout dans un fichier à la suite comme tu l'as fait [...]
    Tu peux nous coller ce code, afin que nous soyons sûr d'avoir le même que toi, et que nous puissions essayer ?

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Par défaut
    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
     
     
    // temp.cpp : définit le point d'entrée pour l'application console.
    //
     
    #include "stdafx.h"
    #include <cstdio>
    #include <stddef.h>
    #include <stdio.h>
    #include <iostream>
    #include <fstream>
    #include <iomanip>
    #include <stdlib.h>
    #include <ostream>
    #include <time.h>
    #include <math.h>
    #include <map>
    #include <vector>
    #include <set>
    #include <algorithm>
    #include <iostream> 
    #include <string> 
     
    // Définition de notre structure à trier 
     
    template <class Key_Type, class Data_Type> struct proj 
    { 
       proj(Key_Type i, Data_Type s) : valeur(i), ident(s) {} 
     
       Key_Type valeur; 
       Data_Type ident; 
    }; 
     
    // Mon foncteur
    /*
    template <class Key_Type, class Data_Type> struct sort_cles
    { 
       bool operator ()(proj<Key_Type,Data_Type>& a1, proj<Key_Type,Data_Type>& a2) 
       { 
          return a1.valeur < a2.valeur; 
       } 
    }; */
     
    //Ma fonction
     
    template <class Key_Type, class Data_Type> bool sort_cles(const proj<Key_Type,Data_Type>& a1, const proj<Key_Type,Data_Type>& a2) 
    { 
       return a1.valeur < a2.valeur; 
    }
     
    using namespace std;
    template <class Key_Type, class Data_Type> class classe_template
    {
    public:
    	classe_template();
    };
     
    template <class Key_Type, class Data_Type>
    classe_template<Key_Type,Data_Type>::classe_template()
    {
    	vector<proj<Key_Type,Data_Type> > _map2;
    	_map2.push_back(proj<Key_Type,Data_Type>(0.25, 2)); 
    	_map2.push_back(proj<Key_Type,Data_Type>(5057.056, 6)); 
    	_map2.push_back(proj<Key_Type,Data_Type>(2.47527, 3));
    	_map2.push_back(proj<Key_Type,Data_Type>(0.247527, 1)); 
    	_map2.push_back(proj<Key_Type,Data_Type>(24.7527, 5)); 
    	_map2.push_back(proj<Key_Type,Data_Type>(24.752, 4));
     
    //  Test de la fonction seule sans le sort. Fonctionne
    	bool test=sort_cles<Key_Type,Data_Type> (proj<Key_Type,Data_Type>(5057.056, 6),proj<Key_Type,Data_Type>(0.247527, 1));
    	test=sort_cles<Key_Type,Data_Type> (proj<Key_Type,Data_Type>(0.247527, 1),proj<Key_Type,Data_Type>(5057.056, 6));
     
    //	sort avec mon foncteur -> erreur de compilation
    //	sort(_map2.begin(), _map2.end(), sort_cles<Key_Type,Data_Type>()); 
     
    //	le même sort mais en utilisant ma fontion et pas un foncteur -> même erreur
    	sort(_map2.begin(), _map2.end(), sort_cles<Key_Type,Data_Type>); 
     
     
    }
     
    int _tmain(int argc, _TCHAR* argv[])
    {
    	classe_template<float,unsigned int>();
    }
    En release ça compile ! Enfin je sais pas trop ce que ça veut dire de mettre en release. Est ce que il faut que je mette tout le temps en release ? Qu'est ce que ça implique, quelles différences ? Ya til une FAQ qui explique les différentes options qu'on peut régler sur visual parce que bon je veux pas trop vous faire perdre vore temsp non plus si c'est juste un erreur de config. Merci en tout cas

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Par défaut
    En fait mon projet est un projet "Application console win32". Si je crée avec un "projet vide" Là oui ça compile. Mais bon comme tout à l'heure je sais pas trop si c ce que je dois utiliser...

  14. #14
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Le __w64 laisserait entendre que c'est du win64 mais je n'en suis pas non plus certain, j'ai jamais fait de win64...

    Tu as ajouté des trucs dans stdafx.h ?

    MAT.

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Par défaut
    j'ai rien rajouté à stdafx.h. Le voilà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    #pragma once
    #define WIN32_LEAN_AND_MEAN		// Exclure les en-têtes Windows rarement utilisés
    #include <stdio.h>
    #include <tchar.h>

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 9
    Par défaut Solution
    Bon j'ai fini par faire autremnt en surchargeant l'opérateur <

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    template <class Key_Type, class Data_Type> 
    bool operator <(proj<Key_Type,Data_Type>& a1, proj<Key_Type,Data_Type>& a2) 
       { 
          return a1.valeur < a2.valeur; 
       }
    Là, ça compile tout le temps.

    Merci quand même à tous pour votre aide

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 08/12/2006, 14h42
  2. Problème std::list + templates GCC/G++ 4.x
    Par Amalsek dans le forum GCC
    Réponses: 5
    Dernier message: 12/05/2006, 11h04
  3. Problème de compilation template
    Par Bourrine dans le forum Langage
    Réponses: 4
    Dernier message: 20/01/2006, 21h15
  4. [XSLT] Problème avec apply-templates
    Par NeoMan dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 29/12/2005, 14h45

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