Probleme avec boost::unorderable_map
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:
Code:
boost::unorderable_map<A*, B, hashA, equalA> myMap;
Voici le code de ma structure hashA:
Code:
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.
}
}; |
Malheureusement dès que j'ajoute un objet de la façon suivante:
Code:
1 2 3
| A* a = new A();
B b;
myMap[a] = b; |
J'obtiens une erreur de compilation:
Code:
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 |
Je n'arrive pas du tout à comprendre le problème...
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) ).