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 : Sélectionner tout - Visualiser dans une fenêtre à part
boost::unorderable_map<A*, B, hashA, equalA> myMap;
Voici le code de ma structure hashA:
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.
    }
};
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
A* a = new A();
B b;
myMap[a] = b;
J'obtiens une erreur de compilation:
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
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) ).