J'ai le code suivant (ce qui est un code semi-sudo, qui ne peut compiler):Comment puis-je accéder à mon instance de classe à partir d'un thread boost?
class FooBar {
public:
void a();
void b();
boost::shared_ptr<boost::thread> m_thread;
std::string m_test;
};
void FooBar::a() {
m_test = "Foo bar"
m_thread = shared_ptr<thread>(new thread(bind(&FooBar::b, this)));
}
void FooBar::b() {
cout << m_test;
}
Le code cout << test
ne donne pas de sortie, car m_test
est ""
au lieu de "Foo bar"
. Pourquoi est-ce? Je pensais que le passage this
comme le 2ème argument à bind
me permettrait d'accéder à la même instance de b()
- suis-je incorrecte?
Excellent merci pour l'affichage du code de travail! Et oui, j'ai mis un point d'arrêt dans le destructeur et hop, j'utilisais un type complet pour mon singleton statique, au lieu d'un pointeur - duh! Donc, une nouvelle instance était créée chaque fois que j'appelais le singleton. Fixe maintenant, merci encore pour votre code. –