Utilisation de std::map avec le type void *

Résolu
cs_toast3r Messages postés 2 Date d'inscription jeudi 21 août 2003 Statut Membre Dernière intervention 20 février 2005 - 18 févr. 2005 à 12:07
cs_toast3r Messages postés 2 Date d'inscription jeudi 21 août 2003 Statut Membre Dernière intervention 20 février 2005 - 20 févr. 2005 à 19:13
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

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
18 févr. 2005 à 23:07
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;
3
cs_toast3r Messages postés 2 Date d'inscription jeudi 21 août 2003 Statut Membre Dernière intervention 20 février 2005
20 févr. 2005 à 19:13
Merci bcp, ca marche nickel ! Encore merci :)
0
Rejoignez-nous