retour de reference

Le
schneider jp
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 ;)
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Christophe de VIENNE
Le #728693
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

schneider jp
Le #728692
Oki merci ;)


Christophe de VIENNE wrote:

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



Horst Kraemer
Le #728691
On Thu, 06 May 2004 11:48:41 +0200, schneider jp

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

Samuel Krempp
Le #728689
le Thursday 06 May 2004 12:00, écrivit :

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.

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


kanze
Le #726142
Christophe de VIENNE news:
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.

--
James Kanze GABI Software mailto:
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


Christophe de VIENNE
Le #726141
wrote:
Christophe de VIENNE news:

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



drkm
Le #724635
Horst Kraemer
Renvoyer un objet (statique) du type "pipe" qui contient l'information
"ce n'est pas une pipe".
^^


« Ceci n'est pas une pipe. »

 ;-)

--drkm

Horst Kraemer
Le #724628
On 08 May 2004 15:40:58 +0200, drkm wrote:

Horst Kraemer
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


Alexandre
Le #753337

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é?



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


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


s/pipe/Group/g

--
Horst




Alain Naigeon
Le #753003
"Alexandre" 40c18ca1$0$7703$

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 - - Strasbourg, France



Publicité
Poster une réponse
Anonyme