Voila j'ai créer une petite hashmap pour stocker des matériaux et des groupes de meshes .
La clef est le matériaux et l'objet le MesheGroupe
Chaque meshe est associé à un matériaux. Si celui-ci existe déja dans cette hashmap, j'ajoute la meshe au MesheGroupe. Problème il ne trouve jamais de matériaux. . Enfin si une fois mais il devrait l'avoir fait pleins de fois avant.


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
 
// hashing function
class MateriauxHash
{
public:
    MateriauxHash() { }
 
#if wxUSE_STL && defined(HAVE_STL_HASH_MAP)
    size_t operator()( const Materiaux* k ) const { return (size_t)k; }
#else
    wxUIntPtr operator()( const Materiaux* k ) const { return wxPtrToUInt(k); }
#endif
 
    MateriauxHash& operator=(const MateriauxHash&) { return *this; }
};
 
//comparison operator
class MatKeyEqual
{
    public:
        MatKeyEqual() { }
        bool operator()( const Materiaux* a, const Materiaux* b ) const { return a->Compare(b); }
 
        MatKeyEqual& operator=(const MatKeyEqual&) { return *this; }
};
 
 
WX_DECLARE_HASH_MAP( Materiaux*, MesheGroupe*, MateriauxHash, MatKeyEqual, HashMapLoadMatMeshe );
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
                                HashMapLoadMatMeshe::value_type avalue( aMateriaux,new MesheGroupe() );
 
                                HashMapLoadMatMeshe::Insert_Result aresultinsert = aHMLoadMatMeshe.insert(avalue);
                                if(!aresultinsert.second)
                                {//le matériaux existe déja
                                    delete aMateriaux;
                                    delete avalue.second;
                                }
                                aresultinsert.first->second->AddMeshe( aMeshe );
Ce code lance un test d'égalité lors d'une N ème insertion mais au deuxième il aurait déja dû le faire. Je comprend pas, pour chaque clef rajoutée, il devrait faire un test sur chaqu'une des clefs ? Là après en avoir inséré plusieurs il me fait un test et se révèle positif. Je comprend pas comment marche cette HashMap

J'ai essayé avec des find et l'opérateur []
Mais ayant des pointeurs à lui passé, j'ai pas envie de lui laisser créer par défaut les MeshesGroupes.

Voici quelques liens:
http://www.wxwidgets.org/manuals/sta...wxhashmap.html
http://www.wxwidgets.org/wiki/index....Text_Templates
http://www.sgi.com/tech/stl/hash_map.html

EDIT: zut j'aurais du mettre le sujet dans wxwidget c++ (désolé me suis trompé)