C++ 如何从boost线程访问我的类实例?
我有以下代码(这是一些半sudo代码,可能无法编译):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;
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;
}