IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SL & STL C++ Discussion :

Valeur de retour après recherche par itérateur


Sujet :

SL & STL C++

  1. #1
    Membre confirmé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Points : 546
    Points
    546
    Par défaut Valeur de retour après recherche par itérateur
    Bonjour à tou(te)s,

    Je fais une recherche en utilisant un itérateur dans un vector. Ce vector contient des objets persos.
    Si je trouve l'objet que je cherche (via son nom), je retourne l'objet (*iterateur), mais que puis-je retourner si je ne le trouve pas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    cElement& GetElement (std::string name)
    {
        std::vector<cElement>::iterator i = m_elements.begin();
        while (i!=m_elements.end())
        {
            if (i->GetName()==name)
            {
                return (*i);
            }
            i ++;
        }
        return (cElement c()); // ? marche pas
    // return (NULL); // ? marche pas
    }
    Mindiell
    "Souvent, femme barrit" - Elephant man

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Renvoyer une référence signifie "je récupérerai toujours un objet valide lorsque j'appellerai cette fonction".
    Deux solutions donc :
    - Lever une exception si la recherche échoue (ce qui signifie que l'échec est un comportement vraiment anormal)
    - Renvoyer une instance particulière qui représente un objet invalide (situation plutôt rare)

    Si tu veux renvoyer quelque chose qui doit pouvoir signifier un échec, renvoie un pointeur et utilise NULL.

  3. #3
    Membre confirmé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Points : 546
    Points
    546
    Par défaut
    hmmm, donc je peux renvoyer i (c'est bien un pointeur sur mon objet, non ?)
    ou NULL. C'est pas idiot ca, merci
    Mindiell
    "Souvent, femme barrit" - Elephant man

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    i n'est pas un pointeur (sauf dans les implémentations paresseuses du genre VC++ 6), si tu veux renvoyer un pointeur sur cElement il faut renvoyer &*i.

  5. #5
    Membre confirmé
    Avatar de Mindiell
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    735
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 735
    Points : 546
    Points
    546
    Par défaut
    J'utilise CodeBlocks et Mingw, et le return(*i) semble fonctionner. Je vais cependant utiliser un &*i désormais. Merci !
    Mindiell
    "Souvent, femme barrit" - Elephant man

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/10/2009, 23h15
  2. valeur de retour par reference
    Par meryeminfo dans le forum Débuter
    Réponses: 7
    Dernier message: 04/07/2009, 18h44
  3. WSS - Valeur calculée d'après une recherche
    Par Socki dans le forum SharePoint
    Réponses: 7
    Dernier message: 06/05/2009, 14h02
  4. PrinterSetupDialog.Execute - Valeur de retour par défaut
    Par Lung dans le forum Composants VCL
    Réponses: 10
    Dernier message: 03/04/2008, 07h58
  5. Réponses: 3
    Dernier message: 24/08/2006, 11h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo