Bonjour,
J'essaye d'utiliser boost::unorderable_map avec un pointeur A* en guise de clés, un objet B en valeur.
J'ai défini une structure pour récupérer ma clé de haschage (hashA) et une autre pour mon opérateur de comparaison (equalA).
Voici comment je défini mon unorderable_map:
Voici le code de ma structure hashA:
Code : Sélectionner tout - Visualiser dans une fenêtre à part boost::unorderable_map<A*, B, hashA, equalA> myMap;
Malheureusement dès que j'ajoute un objet de la façon suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 struct hashA { std::size_t operator()(const A* & a) const { return (std::size_t)(a->getId()); //getId() retourne l'identifiant unique de l'objet. } };
J'obtiens une erreur de compilation:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 A* a = new A(); B b; myMap[a] = b;
Je n'arrive pas du tout à comprendre le problème...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 /usr/local/include/boost/unordered/detail/unique.hpp:183: error: no match for call to '(const hashA) (A* const&)' note: candidates are: size_t hashA::operator()(const A*&) const
Si quelqu'un à une idée.
Merci d'avance.
PS: Pour info j'ai testé directement en créant une unordered_map avec directement l'objet en clé et ça fonctionne (en modifiant bien sûr la méthode de hashA en operator()(const A& a) ).
Partager