Utilisation de std::map avec le type void * [Résolu]

Signaler
Messages postés
2
Date d'inscription
jeudi 21 août 2003
Statut
Membre
Dernière intervention
20 février 2005
-
cs_toast3r
Messages postés
2
Date d'inscription
jeudi 21 août 2003
Statut
Membre
Dernière intervention
20 février 2005
-
Bonjour,



J'utilise un tableau associatif, map et j'ai un problème au niveau de
la récuperation des valeurs, voici le code que j'ai actuellement :



#include

#include <string>

#include <map>



int main(void)

{

std::map<std::string , void*> tstmap;

int var1 = 20;



tstmap["tab"] = &var1;

std::cout << "variable " << tstmap["tab"] << std::endl;

getchar();

return 0;

}



Avec cet exemple, j'obtient :

variable 0012FE90

ce qui doit etre l'adresse memoire, j'ai donc essaye de caster en int en faisant :

std::cout << "variable " << (int) tstmap["tab"] << std::endl;

Resultat :

variable 1244816



Je bloque un peu sur ce souci, si quelqu'un pouvait m'eclairer, merci d'avance !

2 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
C'est normal que ais cela: 0012FE90 en hexa ca fait 1244816 en décimal:
les deux représentent la valeur du pointeur, c'est à dire l'adresse de
var1. Si tu veux afficher la valeur de var1, il faut faire un
indirection. Tu ne peux pas le faire directement puisque le pointeur
est de type void: il faut d'abord caster en int*, puis faire une
indirection:



std::cout << "variable " << *(int*)tstmap["tab"] << std::endl;
Messages postés
2
Date d'inscription
jeudi 21 août 2003
Statut
Membre
Dernière intervention
20 février 2005

Merci bcp, ca marche nickel ! Encore merci :)