Bonjour,
je souhaite créer une classe 'Ensemble' qui hérite de 'std::unordered_set' :
1 2 3 4
| template<class T>
class Ensemble : public std::unordered_set<T> {
...
} |
J'ai plusieurs classe qui hérite de la classe 'Element' :
1 2
| class A : public Element { ... }
class B : public Element { ... } |
J'ai défini la fonction de Hashage pour 'Element' :
1 2 3 4 5 6 7 8
| namespace std {
template <>
struct hash<Element> {
size_t operator()(const Element & e) const noexcept {
return e.getId(); // Unique Id
}
};
} |
Le problème c'est que je ne parviens pas à faire des ensemble de A ou B :
1 2 3 4
| int main() {
Ensemble<Element> mySet_1; // Ok
Ensemble<A> mySet_2; // Pas Ok
} |
error: no match for call to '(const std::hash<A>) (const A&)'|
Quelqu'un peut-il m'expliquer le fonctionnement de std::hash ? Ou est l'erreur ? Merci.
Partager