Pages : 1
#1 Le 17/03/2007, à 22:50
- amwus
[Résolu]retour de fonction void*
Bonjour à tous !
Voila, il y a un léger problème sur lequel je planche.
J'ai une fonction dont le type est void* (void* fonction()), et cette fonction retourne une valeur de type void*.
De quel type doit etre la variable qui reçoit la valeur de cette fonction ?
Imaginons que je veux recevoir la valeur déterminée par la fonction dans une variable de type double, comment dois je m'y prendre ?
si je fait double a = fonction(); ça me retourne une erreur...
Merci d'avance !
Dernière modification par amwus (Le 18/03/2007, à 00:09)
Black holes are where god divided by zero...
Hors ligne
#2 Le 17/03/2007, à 23:18
- tiky
Re : [Résolu]retour de fonction void*
C'est normal que double a = fonction(); ne marche pas vu que tu retourne un pointeur et la tu stock le retour dans un type double ( qui fait 8 octets ) et un pointeur sur une machine 32 bits prend 4 octets, en plus de cela le compilateur n'autorise pas ce type d'opération qui n'est pas logique...
Donc ça sera plûtot:
double * a = fonction();
Autre détail, la conversion du type void * en un autre type n'est implicite que en C. Cependant tu peux toujours utiliser un cast.
double * a = ( double * )fonction();
Les compilateurs C++ eux refusent la conversion implicite d'un pointeur void * tu dois alors utiliser un cast C ou C++:
double * a = static_cast<double *> fonction();
Voilà j'espère avoir répondu à ta question ^^
Conseil d'expert: il vous faut un dentifrice adapté...
Hors ligne
#3 Le 18/03/2007, à 00:09
- amwus
Re : [Résolu]retour de fonction void*
Super ça marche !
merci du tuyaux
Black holes are where god divided by zero...
Hors ligne
#4 Le 18/03/2007, à 00:30
- otheym
Re : [Résolu]retour de fonction void*
Heu, tu arrives à récupérer un résultat d'un void ?
tes zard toi, les fonctions avec un void de retour est une fonction ne renvoyant pas de résultat.
Dans ton cas, au lieu d'un void* donc pointeur sur un void, vu que ta variable est un double, fait renvoyer un double à ta fonction, et oublis pas à la fin de la fonction de faire
return lerésultat
.
Va plutôt lire les cours de C et C++ ici: http://www.siteduzero.com tu verras que ta méthode n'est pas la bonne.
Aelita, je te promet que l'ont pourra bientôt vivre tous les deux.
Je te le jure mon amour.
Hors ligne
#5 Le 18/03/2007, à 17:09
- tiky
Re : [Résolu]retour de fonction void*
@otheym: Il renvoit pas un void mais un void *, c'est totalement différent, un void signifie que l'on renvoie aucune donnée tandis que un void * signifie que l'on renvoie un pointeur sur une variable dont le type est connu. C'est donc au programmeur de connaître le type de la variable selon un contexte qu'il a bien défini. C'est pour cela que l'usage du type void * est fortement déconseillé mais il est parfois la seule solution. Ici il est évident que la fonction devrait retournée un double * plutôt qu'un void * mais peut-être que celle-ci doit retourner autre chose dans un contexte différent.
Conseil d'expert: il vous faut un dentifrice adapté...
Hors ligne
#6 Le 18/03/2007, à 21:13
- amwus
Re : [Résolu]retour de fonction void*
et c'est bien le cas. Pour que le code de ma librairie soit compatible avec tout programme, il doit pouvoir fonctionner avec n'importe quel type. Donc ici, le void* s'impose
Black holes are where god divided by zero...
Hors ligne
#7 Le 18/03/2007, à 22:36
- tiky
Re : [Résolu]retour de fonction void*
Tu codes en C ou C++ ?
Si tu codes en C++, je te conseille d'utiliser plutôt des templates
Conseil d'expert: il vous faut un dentifrice adapté...
Hors ligne
#8 Le 19/03/2007, à 06:26
- benlaug
Re : [Résolu]retour de fonction void*
@amwus : Dit espèce de gros flemmard, tu te foules pas beaucoup pour ton projet 6
Hors ligne