C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

retour de reference

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
schneider jp
Guest





PostPosted: Thu May 06, 2004 9:48 am    Post subject: retour de reference Reply with quote



bonjour,

comment retourner un equivalent de NULL par reference?

en fait j'ai une fonction :

Group & findGroup(const string & name);

si elle trouve le bon groupe elle le renvoie mais comment signifier qu'elle
ne l'a pa trouvé?

merci bcp Wink
Back to top
Christophe de VIENNE
Guest





PostPosted: Thu May 06, 2004 10:00 am    Post subject: Re: retour de reference Reply with quote



schneider jp wrote:
Quote:
bonjour,

comment retourner un equivalent de NULL par reference?


Il vaut mieux éviter... Une référence sous entends généralement qu'on ne
peut avoir un NULL dedans.

Quote:
en fait j'ai une fonction :

Group & findGroup(const string & name);

si elle trouve le bon groupe elle le renvoie mais comment signifier qu'elle
ne l'a pa trouvé?


Personnellement je fais :
bool findGroup(const string & name, Group & result);



A+

Christophe

Back to top
schneider jp
Guest





PostPosted: Thu May 06, 2004 10:05 am    Post subject: Re: retour de reference Reply with quote



Oki merci ;)


Christophe de VIENNE wrote:

Quote:
schneider jp wrote:
bonjour,

comment retourner un equivalent de NULL par reference?


Il vaut mieux éviter... Une référence sous entends généralement qu'on ne
peut avoir un NULL dedans.

en fait j'ai une fonction :

Group & findGroup(const string & name);

si elle trouve le bon groupe elle le renvoie mais comment signifier
qu'elle ne l'a pa trouvé?


Personnellement je fais :
bool findGroup(const string & name, Group & result);



A+

Christophe


Back to top
Horst Kraemer
Guest





PostPosted: Thu May 06, 2004 10:09 am    Post subject: Re: retour de reference Reply with quote

On Thu, 06 May 2004 11:48:41 +0200, schneider jp
<j-p.schneider (AT) laposte (DOT) net> wrote:

Quote:
bonjour,

comment retourner un equivalent de NULL par reference?

en fait j'ai une fonction :

Group & findGroup(const string & name);

si elle trouve le bon groupe elle le renvoie mais comment signifier qu'elle
ne l'a pa trouvé?

Renvoyer un objet (statique) du type "pipe" qui contient l'information
"ce n'est pas une pipe".


s/pipe/Group/g

--
Horst


Back to top
Samuel Krempp
Guest





PostPosted: Thu May 06, 2004 12:12 pm    Post subject: Re: retour de reference Reply with quote

le Thursday 06 May 2004 12:00, [email]cdevienne (AT) alphacent (DOT) com[/email] écrivit :

Quote:
schneider jp wrote:
bonjour,

comment retourner un equivalent de NULL par reference?


Il vaut mieux éviter... Une référence sous entends généralement qu'on ne
peut avoir un NULL dedans.

c'est même garanti, ce qui fait un interêt des références.

Quote:
en fait j'ai une fonction :

Group & findGroup(const string & name);

si elle trouve le bon groupe elle le renvoie mais comment signifier
qu'elle ne l'a pa trouvé?


Personnellement je fais :
bool findGroup(const string & name, Group & result);

ou alors on garde la signature
Group& findGroup(const string& name)
en signalant les problèmes par des exceptions.
ça donne un style fonctionnel que je trouve plus limpide, pour peu que la
possibilité d'exceptions convienne au contexte.

--
Sam

Back to top
kanze@gabi-soft.fr
Guest





PostPosted: Thu May 06, 2004 4:02 pm    Post subject: Re: retour de reference Reply with quote

Christophe de VIENNE <cdevienne (AT) alphacent (DOT) com> wrote


Quote:
schneider jp wrote:

comment retourner un equivalent de NULL par reference?

Il vaut mieux éviter... Une référence sous entends généralement qu'on
ne peut avoir un NULL dedans.

Pas seulement généralement. Par définition, une référence désigne
toujours un objet. Elle n'est donc jamais nulle.

Quote:
en fait j'ai une fonction :

Group & findGroup(const string & name);

si elle trouve le bon groupe elle le renvoie mais comment signifier
qu'elle ne l'a pa trouvé?

Personnellement je fais :
bool findGroup(const string & name, Group & result);

Personnellement, je fais :

Group* findGroup( std::string const& name ) ;

Si on veut renvoyer un pointeur, on en renvoie un pointeur.

D'ailleurs, ta fonction ne marche pas dans le cas où Group ne supporte
pas la copie ou qu'il n'a pas de constructeur par défaut. Ni le cas où
on veut en fait renvoyer un objet qui dérive de Group. Ni où on renvoie
une référence pour que l'utilisateur peut modifier l'objet qu'on
renvoie. En somme, à peu près toutes les raisons qui nous auraient pu
conduire à vouloir renvoyer une référence pour commencer.

--
James Kanze GABI Software mailto:kanze (AT) gabi-soft (DOT) fr
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34

Back to top
Christophe de VIENNE
Guest





PostPosted: Thu May 06, 2004 5:24 pm    Post subject: Re: retour de reference Reply with quote

[email]kanze (AT) gabi-soft (DOT) fr[/email] wrote:
Quote:
Christophe de VIENNE <cdevienne (AT) alphacent (DOT) com> wrote in message
news:<newscache$keeaxh$kdk$1 (AT) guronzan (DOT) alphacent.com>...


schneider jp wrote:


comment retourner un equivalent de NULL par reference?


Il vaut mieux éviter... Une référence sous entends généralement qu'on
ne peut avoir un NULL dedans.


Pas seulement généralement. Par définition, une référence désigne
toujours un objet. Elle n'est donc jamais nulle.


en fait j'ai une fonction :


Group & findGroup(const string & name);


si elle trouve le bon groupe elle le renvoie mais comment signifier
qu'elle ne l'a pa trouvé?


Personnellement je fais :
bool findGroup(const string & name, Group & result);


Personnellement, je fais :

Group* findGroup( std::string const& name ) ;

Si on veut renvoyer un pointeur, on en renvoie un pointeur.

D'ailleurs, ta fonction ne marche pas dans le cas où Group ne supporte
pas la copie ou qu'il n'a pas de constructeur par défaut. Ni le cas où
on veut en fait renvoyer un objet qui dérive de Group. Ni où on renvoie
une référence pour que l'utilisateur peut modifier l'objet qu'on
renvoie. En somme, à peu près toutes les raisons qui nous auraient pu
conduire à vouloir renvoyer une référence pour commencer.


En effet. J'ai pas trop réfléchi avant de poster que je citais un cas
bien particulier:

Dans mon application je fais une mise en cache de certains résultats
calculés, qui sont des classes copiable avec une sémantique de valeur.

Et le cache manager a des fonctions du style :
bool getResult( key, result & );
ce qui s'intègre très bien avec la façon dont sont fait les calculs.

Je réfléchirais un peu plus avant de poster :-)

A+

Christophe

Back to top
drkm
Guest





PostPosted: Sat May 08, 2004 1:40 pm    Post subject: [HS] Re: retour de reference Reply with quote

Horst Kraemer <horst.kraemer (AT) epost (DOT) de> writes:

Quote:
Renvoyer un objet (statique) du type "pipe" qui contient l'information
"ce n'est pas une pipe".
^^


« Ceci n'est pas une pipe. »

 ;-)

--drkm

Back to top
Horst Kraemer
Guest





PostPosted: Sat May 08, 2004 5:12 pm    Post subject: Re: [HS] Re: retour de reference Reply with quote

On 08 May 2004 15:40:58 +0200, drkm <usenet.fclcxx (AT) fgeorges (DOT) org>
wrote:

Quote:
Horst Kraemer <horst.kraemer (AT) epost (DOT) de> writes:

Renvoyer un objet (statique) du type "pipe" qui contient l'information
"ce n'est pas une pipe".
^^

« Ceci n'est pas une pipe. »

 Wink

La trahision des classes....

Verifié Wink Merci de la correction.

--
Horst


Back to top
Alexandre
Guest





PostPosted: Sat Jun 05, 2004 9:04 am    Post subject: Re: retour de reference Reply with quote

Quote:

bonjour,

comment retourner un equivalent de NULL par reference?

on ne peut pas.

Quote:

en fait j'ai une fonction :

Group & findGroup(const string & name);

si elle trouve le bon groupe elle le renvoie mais comment signifier
qu'elle
ne l'a pa trouvé?

le mieux, AMA, est de ne rien renvoyer (puisqu'elle n'a rien trouvé) mais de
lever une exception.

Quote:

Renvoyer un objet (statique) du type "pipe" qui contient l'information
"ce n'est pas une pipe".


s/pipe/Group/g

--
Horst




Back to top
Alain Naigeon
Guest





PostPosted: Sat Jun 05, 2004 2:31 pm    Post subject: Re: retour de reference Reply with quote

"Alexandre" <alex.g (AT) netcourrier (DOT) com> a écrit dans le message news:
40c18ca1$0$7703$636a15ce (AT) news (DOT) free.fr...
Quote:

bonjour,

comment retourner un equivalent de NULL par reference?

on ne peut pas.


en fait j'ai une fonction :

Group & findGroup(const string & name);

si elle trouve le bon groupe elle le renvoie mais comment signifier
qu'elle
ne l'a pa trouvé?

Tu peux créer en static un Group très spécial que tu reconnaîtras,
appelé GroupeRien ou un truc de ce genre, et tu le renvoies.
Il faut évidemment que la classe Group ait un operator != pour
pouvoir écrire if( GroupeRetour != GroupeRien)

--

Français *==> "Musique renaissance" <==* English
midi - facsimiles - ligatures - mensuration
http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/
Alain Naigeon - [email]anaigeon (AT) free (DOT) fr[/email] - Strasbourg, France




Back to top
Guillaume Gourdin
Guest





PostPosted: Mon Jun 07, 2004 10:19 am    Post subject: Re: retour de reference Reply with quote

Quote:
Tu peux créer en static un Group très spécial que tu reconnaîtras,
appelé GroupeRien ou un truc de ce genre, et tu le renvoies.
Il faut évidemment que la classe Group ait un operator != pour
pouvoir écrire if( GroupeRetour != GroupeRien)

Il y a aussi la solution :
bool findGroup(const string & name, Group & result);
qui renvoie false si le groupe n'est pas trouvé et true si le groupe est
trouvé, assigné le résultat à la variable result passée en paramètre.



Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.