Comment réparer cette erreur?Appel ambigu à une fonction surchargée (variété const)
erreur C2668: 'std :: _ Arbre < _Traits> :: end': appel ambigu à la fonction de surcharge
Mon code ressemble à ceci:
typedef map<int const *, float> my_map_t;
my_map_t _test;
my_map_t::const_iterator not_found = my_map_t::end();
if (_test.find(&iKeyValue) == not_found) {
_test[iKeyValue] = 4 + 5; // not the actual code, but here for simplicity
}
Le compilateur se plaint que il y a un appel ambigu à my_map_t :: end(). Cela a du sens, car la seule différence est le type de retour.
Normalement, vous pouvez désambiguïser l'appel en lançant les paramètres, mais end() n'a pas de paramètres. Des idées?
Il ressemble ' _test' est un type, pas une instance (vous l'avez 'typedef'!). Aussi, qu'est-ce que 'my_map_t'? Prend-il des paramètres basés sur des modèles (dans ce cas, my_map_t :: const_iterator n'a pas de sens) ou non (dans ce cas votre 'typedef' est faux)? –
Vous avez raison. J'ai tapé cet extrait rapidement. J'ai corrigé pour que ça ait du sens maintenant. J'ai laissé le my_map_t :: end() là pour montrer où ma pensée était fausse. – Joe
Comment sommes-nous censés répondre à vos questions lorsque vous ne publiez pas votre code? Ne "tapez pas les extraits rapidement". Ne tapez pas de snippets * du tout *. Montrez-nous votre * code * réel, ou le code que vous avez vérifié contient le même problème. Le code qui introduit de nouvelles erreurs, fautes de frappe et bogues nous rend plus difficile de déterminer quelles sont les erreurs sur lesquelles nous sommes censés nous concentrer. – jalf