J'ai une classe qui est utilisée comme clé dans unordered_map. Lorsque j'ai essayé de compiler le code, il affiche une référence indéfinie à std::hash<typeName>::operator()(typename) const
. Comment pourrais-je aller le réparer? Quelle fonction supplémentaire ai-je besoin de surcharger pour que le type défini par l'utilisateur soit utilisé dans unordord_map?C++ unordered_map type défini par l'utilisateur
J'ai une structure dateTime qui stocke les informations de date et d'heure.
Le message d'erreur est le suivant:
In function 'std::__detail::_Hash_code_base<DateTime, std::pair<DateTime const, int>, std::_Select1st<std::pair<DateTime const, int> >, std::equal_to<DateTime>, std::hash<DateTime>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, false>::_M_hash_code(DateTime const&) const': testing.cpp:(.text._ZNKSt8__detail15_Hash_code_baseI10DateTimeSt4pairIKS1_DeESt10_Select1stIS4_ESt8equal_toIS1_ESt4hashIS1_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashELb0EE12_M_hash_codeERS3_[std::__detail::_Hash_code_base<DateTime, std::pair<DateTime const, int>, std::_Select1st<std::pair<DateTime const, int> >, std::equal_to<DateTime>, std::hash<DateTime>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, false>::_M_hash_code(DateTime const&) const]+0x23): undefined reference to 'std::hash<DateTime>::operator()(DateTime) const'
Merci.
Votre question manque cruellement de code, le message d'erreur exact et _full_, ainsi que des informations sur le compilateur que vous utilisez. –
Je pense qu'il s'agit d'un duplicata de http://stackoverflow.com/questions/647967/how-to-extend-stdtr1hash-for-custom-types – SCFrench
Si quelqu'un sait comment échapper à un backtick à l'intérieur des backticks, n'hésitez pas à le faire (Je les ai changés pour 'dans mon édition). Les lignes sont trop longues pour que "indentation par 4 espaces" soit utile. Par le message d'erreur, le compilateur est une variété de GCC. –