Bonjour,
J'utilise std::ostringstream de la bibliothèque sstream pour faire passer mes entiers sous la forme de chaîne de caractères.
Dans un programme tout simple, pas de souci, l'exemple suivant fonctionne :
Mais quand j'intègre ça dans mon application multi-threadée, ça ne marche plus. J'utilise les Thread boost, j'appelle donc une méthode static de cette façon :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #include <iostream> #include <sstream> int main() { std::ostringstream out; int solution = 8; out << solution; std::cout << out.str() << std::endl; return 0; }
Déclaration dans MaClasse.h
Appel dans MaClasse.c
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 static void thread_MonThread(MaClasse * MaClasse);
dans ma MaClasse.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 boost::thread thread_MonThread(boost::bind(&MaClasse::thread_MonThread,this));
Voici l'allure de mon Thread (pour l'instant très simple) :
et à la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 void MaClasse::thread_MonThread(MaClasse * pMaClasse) { std::ostringstream out; int val = 8; out << val; std::string str = out.str(); }j'ai un seg fault. Je ne comprend pas pourquoi, je dois mal gérer quelque chose. J'ai essayé de faire passer ma variable "out" en attribut de MaClasse et d'appeler une fonction privée qui retourne la String résultat. Mais même résultat : seg fault. Si qqun sait d'ou cette erreur peut venir, je suis preneur...
Code : Sélectionner tout - Visualiser dans une fenêtre à part out << val;
Partager