le problème viendrait de str() qui renvoit un objet temporaire std::string, dont on récupère l'adresse de la chaine interne par c_str(). Cet objet est détruit juste après l'affectation à tmp.
tmp pointe ensuite sur une zone ou il n'y a plus rien pour le cout qui suit (le debug sous VC2005 indique un pointeur invalide)
Le seul moyen que j'ai pour le moment pour t'éviter le problème est d'utiliser simplement std::string.
par exemple
string tmpStr = message.str();
const char* tmp = tmpStr.c_str();
fonctionne.
Vous n’avez pas trouvé la réponse que vous recherchez ?
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 9 juil. 2006 à 09:36
Oue en effet, j'avais pas pensé a ca, j'ai été voir sur le doc, c'est
bien un objet temporaire qui est retourné. Donc pas d'autre solution
que de récupérer en string ou de créer un buffer de copier les données
dedans.
nisaloncaje
Messages postés154Date d'inscriptionsamedi 7 janvier 2006StatutMembreDernière intervention28 septembre 2008 9 juil. 2006 à 11:51
ok merci, mais j'ai besoin que ce soit en char* car après c'est traité dans une fonction (qui affiche le texte à l'écran, voir tutorial de Nehe n°43), est ce qu'une conversion est possible ?
Hylvenir
Messages postés364Date d'inscriptionmercredi 11 février 2004StatutMembreDernière intervention 5 octobre 20062 9 juil. 2006 à 12:46
Dans ce tuto, ils utilisent déjà les std::string.
Tu devrais pouvoir utiliser de std::string dans ta struct.
et lors de l'appel à la fonction (glPrint ou freetype::print)
faire la conversion à ce moment par .c_str()
Je n'ai pas vu de fonction prenant directement une struct de 2 char* directement ?