Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

retour de reference

11 réponses
Avatar
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 ;)

10 réponses

1 2
Avatar
Christophe de VIENNE
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

Avatar
schneider jp
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



Avatar
Horst Kraemer
On Thu, 06 May 2004 11:48:41 +0200, schneider jp
wrote:

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

Avatar
Samuel Krempp
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


Avatar
kanze
Christophe de VIENNE wrote in message
news:<newscache$keeaxh$kdk$...

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


Avatar
Christophe de VIENNE
wrote:
Christophe de VIENNE wrote in message
news:<newscache$keeaxh$kdk$...


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



Avatar
drkm
Horst Kraemer writes:

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


« Ceci n'est pas une pipe. »

 ;-)

--drkm

Avatar
Horst Kraemer
On 08 May 2004 15:40:58 +0200, drkm
wrote:

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


Avatar
Alexandre

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




Avatar
Alain Naigeon
"Alexandre" a écrit dans le message news:
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



1 2