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

C++ Discussion :

retourner une liste ??


Sujet :

C++

  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2004
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 123
    Par défaut retourner une liste ??
    hello tout le monde.
    j'ai une classe tache :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    class Tache {
      public:
        string titre;
        string description;
     
      public:	
        Tache();
        virtual ~Tache();
     
        Tache (string nom, string description);
        Tache (const Tache & tache);
     
        string get_titre ();
        string get_description ();
     
    };
    j'ai une fonction qui rempli une liste de type tache et cherche un element dans cette liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    list<Tache> Tache::recheche_tache(string fichier,string date_seek)
    {	
    	list <Tache> TAC;
    	list <Tache>::iterator TACiterator;
     
    	/*
    	code qui rempli TAC ..Etc
    	*/
    	for ( TACiterator=TAC.begin(); TACiterator!=TAC.end(); TACiterator++ ) 
    	{
    		 if( TACiterator->get_date()==date_seek )
    		 {
    			 return TACiterator;  
    		 }
    	}
    	return NULL;	      
    }
    et je veux retourne cette element trouve pour pouvoir l'utiliser de maniere suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    list <Tache> Ltache=recheche_tache();
    cout <<"."<<Ltache->get_titre()<<"."<< endl;
    mais j'arrive pas à le faire la fonction correctement, je crois que je declare mal la fonction.

    quelqu'un peut m'aider svp

    merci d'avance

  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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Tu as trois types différents pour une même chose :

    - Tu déclares renvoyer une list
    - Parfois tu renvoies un list::iterator
    - Parfois un entier (NULL)

    Et je crois même que ce que tu veux en fait renvoyer est encore différent : un Tache... En tout cas tu ne pourras rien renvoyer en rapport avec ta liste, puisque celle-ci est locale à la fonction et sera détruite dès sa sortie.

  3. #3
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Plusieurs problèmes dans ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list<Tache> Tache::recheche_tache(string fichier,string date_seek)
    Cette fonction retourne une list< Tache > et non pas une instance de Tache.
    renvoie un itérateur et non une instance de Tache. Il faut le déréférencer pour accéder à l'instance de Tache.
    alors que get_titre() est une méthode de la classe Tache, et pas une méthode du conteneur list...

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2004
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 123
    Par défaut
    puisque celle-ci est locale à la fonction et sera détruite dès sa sortie.
    je crois que c'est la reponse de mon probleme,
    on pent envoyer un item " tache " et la fait rempli par la fonction??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Tache T;
    recheche_tache(T);
    T.get_titre;
    c'est possible ca?

  5. #5
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    oui, si tu passes une référence sur la tache. Autant la retourner dans ces cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Tache T(recherche_tache());
    T.get_titre();
    ou même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    recherche_tache().get_titre();

  6. #6
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Oui, sauf que le passage par référence évite une recopie inutile

    Et que ta solution nécessite d'utiliser une exception en cas de recherche infructueuse. Alors qu'en passant une référence, on peut renvoyer un booléen par exemple.

  7. #7
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    C'est tout à fait vrai

  8. #8
    Membre émérite
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Février 2004
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Février 2004
    Messages : 644
    Par défaut
    et je le confirme

  9. #9
    Membre confirmé
    Inscrit en
    Janvier 2004
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 123
    Par défaut
    oki merci ^^

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

Discussions similaires

  1. lien retournant une liste de resultats
    Par gloglo dans le forum Struts 1
    Réponses: 2
    Dernier message: 19/12/2006, 13h28
  2. Retourner une liste privée des multiples d'un nombre
    Par Premium dans le forum Langage
    Réponses: 2
    Dernier message: 08/10/2006, 22h50
  3. Réponses: 4
    Dernier message: 24/05/2006, 14h40
  4. methode qui retourne une liste d'objets du meme type
    Par anoukhan dans le forum Oracle
    Réponses: 8
    Dernier message: 12/01/2006, 18h38
  5. [MFC] Retourner une liste d'objets
    Par 1cado dans le forum MFC
    Réponses: 10
    Dernier message: 28/07/2003, 12h11

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