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 :

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;
}
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 :

Déclaration dans MaClasse.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
static void thread_MonThread(MaClasse * MaClasse);
Appel dans MaClasse.c
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
boost::thread thread_MonThread(boost::bind(&MaClasse::thread_MonThread,this));
dans ma MaClasse.
Voici l'allure de mon Thread (pour l'instant très simple) :

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();
}
et à la ligne 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...