
Envoyé par
akrobat
Bonjour, débutant en C++, j'ai du mal à mort
je dois simuler la fonction find() parce que ça ne compare pas les attributs des objets mais les objets eux-mêmes !
Tu devrais plutot indiquer comment faire la comparaison plutot que de refaire ca toi-meme. Le troisieme argument template de map sert a cela.
1 2 3 4 5
| struct ComparateurDeNoeuds {
bool operator()(Noeud* l, Noeud* r) {
return l->x < l->x || (l->x == r->x || l->y < r->y);
};
typedef std::map<Noeud*, Successeur, ComparateurDeNoeuds> Mappy; |
Pour ton autre probleme, remplace
Mappy::iterator LabMap::existence(Noeud *clef)
par
LabMap::Mappy::iterator LabMap::existence(Noeud *clef)
Mappy est un nom local a la classe LabMap et quand il parse le type de retour le compilateur ne sait pas encore que tu veux definir un membre de cette classe.
Et un dernier conseil, ne met pas de using dans les entetes. Ca les imposes a tous ceux qui doivent utiliser l'entete et ca peut leur poser des problemes (par exemple dans mon code on a un interpreteur lisp vieux d'environ 20 ans... il a un type list defini globalement aucune raison de changer cela dans nos millions de lignes de code. Si quelqu'un fait un using namespace std et qu'on inclu <list> on se retrouve avec une ambiguite entre std::list et le list de l'interpreteur).
Partager