Besoin d'aide sur un return ... niveau debutant :) [C++] - Programmation
Marsh Posté le 01-04-2002 à 00:27:39
tu ne peux retourner qu'un entier ou un pointeur.
dans ta fonction, tu peux utiliser le passage par référence pour 'renvoyer' tes variables, puis renvoyer un bool pour savoir si le chargement s'est bien passé.
bool charger(int& a, int& b, int& c)
{
if (erreurquelconque ...) return false;
a = 1; b = 2; c = 3;
return true;
}
...
int a, b, c;
bool b = charger();
Marsh Posté le 01-04-2002 à 00:44:32
g juste une ptite question toute bete ... t'as lu la doc avant de commencer ???
Marsh Posté le 01-04-2002 à 11:42:59
merci pour ton aide youdontcare...
oui, Harry, j'avais lu la doc, ca fait un petit moment que je fais du c++, c juste que j'avais jamais pensé a cette possibilité de retourner plusieurs données par return ...
cette idée lumineuse m'a frappé hier a minuit, et vu que ca compilait, j'ai eu un instant l'espoir que ca fonctionnerait
sinon, j'avais pensé à retourner une map (ou vector) contenant mes données pour les recupérer, mais c moins pratique...
[jfdsdjhfuetppo]--Message édité par BFRRedox--[/jfdsdjhfuetppo]
Marsh Posté le 01-04-2002 à 12:17:47
>> vu que ca compilait
c'est du C standard, le compilo évalue les expressions les unes après les autres.
l'intérêt de la virgule dans un return est de compacter le code (après on aime ou on n'aime pas).
// version 'standard'
bool myFunc(int param)
{
if (param)
{
doThis();
return true;
}
else
{
doThat(param);
return false;
}
}
// version virgule
bool myFunc(int param)
{
if (param) return doThis(), true;
else return doThat(param), false;
}
Marsh Posté le 01-04-2002 à 12:34:10
Et en plus compact :
return param?(doThis(),true):(doThat,false);
(bordel de smilies de merde)
Marsh Posté le 01-04-2002 à 14:24:34
BFRRedox a écrit a écrit : Salut, j'ai un problème tout bête sur C++ ... simplement, en utilisant une fonction "charger", elle retourne 3 valeurs ex : int charger() { ... return a,b,c ; } avec a,b et c 3 int evidement comment puis-je faire pour les recupérer individuellement par la suite? c a d : j'appelle dans mon main : charger(); et pour recup? si je fais int x = charger(); , x prends uniquement la valeur du dernier int retourné, c'est à dire "c" |
C'est pas logique ce que tu veux faire : comment veux tu faire "tenir" 3 entiers dans un seul ?
Pour ton problème, je te conseille de lire un bon bouquin de C++, particulièrement le chapitre sur les tableaux.
Marsh Posté le 01-04-2002 à 17:42:03
BFRRedox a écrit a écrit : Salut, j'ai un problème tout bête sur C++ ... simplement, en utilisant une fonction "charger", elle retourne 3 valeurs |
je suis juste un chouilla moins débutant que toi, mais ce que je sais, c'est que si tu utilises "return", ça ne marche qu'avec une seule valeur (int, float,double...)
tu as deux solutions :
- ou bien tu crées un tableau de 3 cases dans lequel tu fourres tes trois entiers, et tu dis à ta fonction de retourner le tableau (et non pas les trois valeurs).
- ou bien tu utilises les pointeurs ; il n'y aura plus de commande "return" proprement dite dans ta fonction. Les pointeurs c'est un peu hard à capter au départ mais une fois que tu as compris, tu pourras plus t'en passer Ainsi,
main()
{ int a,b,c ;
void charger(int x, int y, int z) ;
charger(&a,&b,&c) ;
...=a ;
...=b ;
...=c ;
}
void charger(int *x, int *y, int *z)
{ *x=... ;
*y=... ;
*z=... ;
}
Bye
[jfdsdjhfuetppo]--Message édité par eniac--[/jfdsdjhfuetppo]
Marsh Posté le 01-04-2002 à 21:25:16
eniac a écrit a écrit : void charger(int *x, int *y, int *z) { *x=... ; *y=... ; *z=... ; } Bye |
now that's better
Marsh Posté le 02-04-2002 à 01:03:46
Je voudrais juste te conseiller BFRRedox de lire un bouquin de C aux chapitres suivants:
- pointeur
- passage par paramètre
Apres tout deviendra clair...
P.S.: oublie ta solution de passer par un tableau car c bidon c pas du C c du bricolage... les pointeurs c fait justement pour modifer une variable a l'interieur d'une fonction...
Marsh Posté le 01-04-2002 à 00:03:14
Salut, j'ai un problème tout bête sur C++ ...
simplement, en utilisant une fonction "charger", elle retourne 3 valeurs
ex :
int charger()
{
...
return a,b,c ;
}
avec a,b et c 3 int evidement
comment puis-je faire pour les recupérer individuellement par la suite?
c a d : j'appelle dans mon main :
charger();
et pour recup?
si je fais int x = charger(); , x prends uniquement la valeur du dernier int retourné, c'est à dire "c"
merci d'avance
@+
---------------
...You'll be perfect just like me...