Fonction find du STL

saturne_1606 Messages postés 29 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 23 juin 2006 - 1 avril 2004 à 09:54
saturne_1606 Messages postés 29 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 23 juin 2006 - 1 avril 2004 à 14:38
Bonjour a tous!

Voila mon prob:
g un exo1.h comme suit:

#include <string>
#include <list>
class personne
{
    protected :
    string nom;
    public :
    personne(string = "");
};
class ens_pers
{
    private :
    list l;
    public :
    void operator <(personne);
    bool operator [](personne);
    bool operator ==(ens_pers&);
    bool operator !=(ens_pers&);
    int card();
    friend ostream& operator <<(ostream&, ens_pers&);
};

et dans mon .cpp g la fonction suivante :

bool ens_pers::operator [](personne p)
{
    list::iterator it;
    it = find(l.begin(), l.end(), p);
    if (it!=l.end()) return true;
    else return false;
}

Le prob est qu'il me dit que je fait un appel implite de int find(...)
Alors ma question est pour quoi ca ne fonctionne pas?
En fait je veux vérifier si une personne p appartient a un ens_pers. Voila.

Je vous remerci d'avance de votre attention.

2 réponses

Hylvenir Messages postés 364 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 5 octobre 2006 2
1 avril 2004 à 14:19
Im manque au moins l'opérateur == sur personne en friend.

bool operator == ( const personne& lhs, const personne& rhs )
{
return lhs.nom == rhs.nom;
}

sinon
bool ens_pers::operator []( const personne& p )
{
return ( find( l.begin(), l.end(), p ) != l.end() );
}

doit suffire.. même si elle devrait plutôt s'appeler find...

il faut utiliser des const &....
0
saturne_1606 Messages postés 29 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 23 juin 2006
1 avril 2004 à 14:38
Merci de ton aide.

Cependant le problème persiste. Meme apres tes corrections.
0
Rejoignez-nous