C++ 如何从boost线程访问我的类实例?

C++ 如何从boost线程访问我的类实例?,c++,boost,multithreading,C++,Boost,Multithreading,我有以下代码(这是一些半sudo代码,可能无法编译): class FooBar{ 公众: 使a()无效; 无效b(); boost::共享线程; 标准:字符串m_测试; }; void FooBar::a(){ m_test=“Foo bar” m_thread=shared_ptr(新线程(绑定(&FooBar::b,this)); } void FooBar::b(){ 是的,这很有效。这是“真实”版本,它实际上打印了“Foo-bar”: #包括 #包括 #包括 使用名称空间boost;

我有以下代码(这是一些半sudo代码,可能无法编译):

class FooBar{
公众:
使a()无效;
无效b();
boost::共享线程;
标准:字符串m_测试;
};
void FooBar::a(){
m_test=“Foo bar”
m_thread=shared_ptr(新线程(绑定(&FooBar::b,this));
}
void FooBar::b(){

是的,这很有效。这是“真实”版本,它实际上打印了“Foo-bar”:

#包括
#包括
#包括
使用名称空间boost;
结构FooBar{
使a()无效;
无效b();
共享线程;
标准:字符串m_测试;
};
void FooBar::a(){
m_test=“Foo bar”;
m_thread=make_shared(绑定(&FooBar::b,this));
}
void FooBar::b(){
std::cout join();
返回0;
}

代码
非常感谢您发布工作代码!是的,我在析构函数中放置了一个断点,嘿,presto,原来我对静态单例使用的是完整类型,而不是指针-duh!所以每次调用单例时都会创建一个新实例。现在修复了,再次感谢您的代码。
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;
}
#include <boost/make_shared.hpp>
#include <boost/thread.hpp>
#include <boost/bind.hpp>

using namespace boost;

struct FooBar {
    void a();
    void b();
    shared_ptr<thread> m_thread;
    std::string m_test;
};

void FooBar::a() {
    m_test = "Foo bar";
    m_thread = make_shared<thread>(bind(&FooBar::b, this));
}

void FooBar::b() {
    std::cout << m_test;
}

int main() {
    FooBar fb;
    fb.a();
    fb.m_thread->join();
    return 0;
}