| View previous topic :: View next topic |
| Author |
Message |
schneider jp Guest
|
Posted: Thu May 06, 2004 9:48 am Post subject: retour de reference |
|
|
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
|
|
| Back to top |
|
 |
Christophe de VIENNE Guest
|
Posted: Thu May 06, 2004 10:00 am Post subject: Re: retour de reference |
|
|
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
|
Posted: Thu May 06, 2004 10:05 am Post subject: Re: retour de reference |
|
|
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
|
Posted: Thu May 06, 2004 10:09 am Post subject: Re: retour de reference |
|
|
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
|
Posted: Thu May 06, 2004 12:12 pm Post subject: Re: retour de reference |
|
|
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
|
Posted: Thu May 06, 2004 4:02 pm Post subject: Re: retour de reference |
|
|
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
|
Posted: Thu May 06, 2004 5:24 pm Post subject: Re: retour de reference |
|
|
[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
|
Posted: Sat May 08, 2004 1:40 pm Post subject: [HS] Re: retour de reference |
|
|
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
|
Posted: Sat May 08, 2004 5:12 pm Post subject: Re: [HS] Re: retour de reference |
|
|
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. »
|
La trahision des classes....
Verifié Merci de la correction.
--
Horst
|
|
| Back to top |
|
 |
Alexandre Guest
|
Posted: Sat Jun 05, 2004 9:04 am Post subject: Re: retour de reference |
|
|
| 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
|
Posted: Sat Jun 05, 2004 2:31 pm Post subject: Re: retour de reference |
|
|
"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
|
Posted: Mon Jun 07, 2004 10:19 am Post subject: Re: retour de reference |
|
|
| 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 |
|
 |
|