La conversion d'un void* pour un std::string

Après avoir parcouru le web et jouer autour de moi, je n'arrive pas à convertir un void*'s de la cible (qui est une chaîne de caractères) à une std::string. J'ai essayé d'utiliser sprintf(buffer, "%p", *((int *)point)); comme recommandé par cette page pour arriver à une chaîne C, mais en vain. Et malheureusement, oui, je dois utiliser un void*, que c'est ce que SDL utilise dans leur USEREVENT struct.

Le code que j'utilise pour remplir le Userevent, pour ceux que cela intéresse, c'est:

std::string filename = "ResumeButton.png";
SDL_Event button_press;
button_press.type = BUTTON_PRESS;
button_press.user.data1 = &filename;
SDL_PushEvent(&button_press);

Des idées?

EDIT: Merci à tous pour les réponses, j'ai juste besoin de lancer le void* pour un std::string*. Je suis bête. Merci les gars tellement!

  • Qu'est-ce que STL, qu'est-ce que USEREVENT dans la STL? C++ n'a pas une telle chose.
  • Qu'essayez-vous de faire? Vous avez un void* pointeur qui pointe vers Quoi?
  • Je pense qu'il veut dire SDL UserEvent linux.die.net/man/3/sdl_userevent
  • Nous montrer le code qui remplit la UserEvent struct.
  • vous avez un problème ici. Par le temps que votre gestionnaire s'exécute, filename est hors de portée et user.data1 est pointé à la poubelle. Vous aurez probablement erreur de segmentation (bien qu'il puisse fonctionner comme prévu... pour un temps... jusqu'à ce qu'il segmentation). Regarde ma réponse à voir comment l'en empêcher.
  • Vous avez tout à fait raison, maintenant que vous le signaler. Merci beaucoup!

InformationsquelleAutor Lewis | 2010-06-19