Bonjour,

je souhaite cr�er une classe 'Ensemble' qui h�rite de 'std::unordered_set' :

Code : S�lectionner tout - Visualiser dans une fen�tre � part
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' :

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
class A : public Element { ... }
class B : public Element { ... }
J'ai d�fini la fonction de Hashage pour 'Element' :

Code : S�lectionner tout - Visualiser dans une fen�tre � part
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 :

Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
int main() {
    Ensemble<Element> mySet_1; // Ok  
    Ensemble<A> mySet_2; // Pas Ok
}
Code : S�lectionner tout - Visualiser dans une fen�tre � part
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.