Bonjours à tous,
une fonction peut elle retourner plusieurs valeurs?
Car je ne connais que return capable de retourner une valeur.
Merci d'avance pour votre aide
Bonjours à tous,
une fonction peut elle retourner plusieurs valeurs?
Car je ne connais que return capable de retourner une valeur.
Merci d'avance pour votre aide
Une fonction ne peut retourner qu'une seule donnée, englobée dans une structure ou pas.
On peut aussi passer les futures retours de donénes par pointeur ou référence à la fonction lors de son appel.
J'ai appris une chose le jour où je suis passée de C++ à Java.
En Java, impossible de retourner plusieurs valeurs.... Panique, je ne savais plus comment coder...
Je me suis repenchée sur les concepts objets, et effectivement, une fonction qui retourne une valeur et une seule, c'est propre, évolutif, maintenable, en bref, objet
Donc, on retourne à la conception...
Le C++ ne permet pas de retourner plusieurs valeurs, donc je ne vois aps comment tu as pu être déboussolé avec Java
Je reconnais que le terme "retourner" était abusif...
On peut toujours faire "sortir" plusieurs valeurs en modifiant les variables de la fonction appelante en passant leur adresse.
Si tu passes tes variables (ou plutôt objet ) par référence (&), alors c'est l'objet lui-même que tu vas manipuler....Envoyé par Futixu
Pas besoin de return donc, puisque tu écris ... directement dedans !
Je pense qu'il devait parler des fonctions à nombre de paramètres variables qu'on lit avec les va_arg, va_start, ...
C'est un héritage du C
Vous trouvez que c'est propre les pointeurs en C++ ? Ou vaut-il mieux de créer 4 fonctions même si elles sont assez similaires, ainsi que de surcharger leurs arguments s'il le faut, plutôut que recourrir aux fameux pointeurs ?
Pour des valeurs de retour facultatives ?
Les pointeurs sont mieux.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Pas vraiment d'accord...Envoyé par Médinoc
Tu préfères X fonctions ?
Libre à toi.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
J'essaie d'utiliser les pointeurs le moins possible sauf dans le cas de liste, vecteurs,... d'objets hérités.Envoyé par shuygar
Sinon je ferai 5 fonctions, 4 pour les différents type d'objet et une privée ou protégée pour le traitement commun aux quatres.
Sauf que des fonctions, il n'en faudra pas 4, il en faudra 16 si ce sont des objets différents.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Tandis qu'avec UNE fonction et 4 pointeurs, tu as juste à tester chacun d'entre eux pour savoir s'il est nul ou non.
Edit: Oups! je ne voulais pas faire de double post, j'avais cru éditer...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
+1 pour Medinoc.
C'est bien plus compact et plus facile à maintenir.
En effet, modifier le comportement de ta fonction sera plus rapide à faire en modifiant qu'une seule fonction, plutôt que les 16.
Mon blog anglais - Mes articles et critiques de livres - FAQ C++0x, avec liste des nouveautés - Conseils sur le C++ - La meilleure FAQ du monde - Avant de créer des classes que vous réutiliserez, regardez si ça n'existe pas déjà - Le site du comité de normalisation du C++
Le guide pour bien débuter en C++ - Cours et tutoriels pour apprendre C++
Un objet qui réalise les calculs et des accesseurs pour accéder aux divers trucs qui peuvent être demandés ?Envoyé par Alp
=> une seule fonction de calcul
=> 16 fonctions pour accéder à chaque donnée individuellement.
Une fonction qui prend des pointeurs en paramètre, c'est bien aussi, quand c'est suffisament bien typé pour éviter les inversions de paramètres.
Sinon, il y a les tuples pour retourner simultanément plusieurs trucs non optionnels.
Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...
En effet ça me parait être la meilleure façon.
Les tuples > un petit article là dessus quelque part?
Mon blog anglais - Mes articles et critiques de livres - FAQ C++0x, avec liste des nouveautés - Conseils sur le C++ - La meilleure FAQ du monde - Avant de créer des classes que vous réutiliserez, regardez si ça n'existe pas déjà - Le site du comité de normalisation du C++
Le guide pour bien débuter en C++ - Cours et tutoriels pour apprendre C++
Bientôt, sans doute
Dans la doc de boost. Je ne sais pas si il y a vraiment grand chose à dire de plus à ce sujet.
Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager