Forums Rue-Montgallet.com
Rue-Montgallet.comRue-Hardware.comRue-Occasion.comRue-DVD.comRue-Jeuxvideo.comRue-AudioVideo.comRue-Telephone.comForums
S'inscrire | S'identifier |
| Recherche avancée | Aide
 
 

Il y a 81 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici

 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet :

problème de transtypage

 
n°12951
drioemgaoi​n
Profil : Jeune recrue
Posté le 06-05-2005 à 23:49:24  profilanswer
 

Voilà, je suis en train de faire un compilateur en C++ et je rencontre un problème vraiment anodin en soi mais que le compilateur refuse d'accepter. Je veux transformer un void * en double ou float. J'essaye de faire comme suit :
 
double res=((double)resultat) sachant que resultat est de type void *
 
mais le compilateur de DevC++ refuse à la compilation et me sort l'erreur suivante :
 
439 C:\Documents and Settings\diego\Bureau\psil2\main.cpp pointer value  used where a floating point value was expected  
 
Si vous savez comment faire n'hésitez pas.
 
P.S: j'ai essayer les reinterpret_cast, dynamic_cast, static_cast, const_cast.

n°12969
JoeBlack12​15
Carpe Diem
Profil : Membre
Posté le 09-05-2005 à 19:15:42  profilanswer
 

faudrait pas plutot mettre double *res = ...?

n°13405
pourquoi_p​as
respecte les autres
Profil : Jeune recrue
Posté le 31-05-2005 à 08:38:49  profilanswer
 

double est un nombre flotant alors que void * est code comme un entier sur 32bit, il faut que tu passe par une fonction qui transforme ton entier en flotant. Je ne sais pas laquelle mais elle existe dans la librairie standard.

n°13411
P-Y
Intermittent du troll
Profil : Vieux de la vieille
Posté le 31-05-2005 à 13:09:01  profilanswer
 

res=((double) *resultat) non? en esperant que resultat pointe sur un entier ou flottant(auqual cas le cast n'est pas necessaire), sinon ca risque de faire n'importe quoi...


---------------
"Comme la Hongrie, le monde informatique a une langue qui lui est propre. Mais il y a une différence. Si vous restez assez longtemps avec des Hongrois, vous finirez bien par comprendre de quoi ils parlent."
[:zzzinv][url=http://www.mozilla-europe.
n°14077
Penpen
Profil : Jeune recrue
Posté le 07-07-2005 à 12:31:37  profilanswer
 

> transformer un void * en double ou float.
heu, ça ne correspond à rien ce que tu demandes. A la rigueur si sizeof(long) == sizeof(void*) (tu as toutes tes chances si tu es sur une machine 32 bits) et que tu veux juste récuperer la valeur du pointeur, tu peux faire :
 
long res= (long)resultat ;
 
 
mais attention ça n'est pas portable ! (µproc 64bits par exemple)


Aller à :
Ajouter une réponse