的所有instaces我只是用thread_local分享我的对象在其下部模块显示相同的数据。但它总是取最后一个实例的对象数据。线程本地为对象
代码:
Test1.h
class Test2;
extern thread_local void* currentpointer;
class Test1
{
public:
Test1(int val);
void display() ;
Test2 *obj;
private:
int temp;
};
Test1.cpp
thread_local void* currentpointer=nullptr;
Test1::Test1(int val)
{
currentpointer = this;
obj = new Test2;
temp = val;
}
void Test1::display()
{
qDebug()<<Q_FUNC_INFO<<temp;
}
Test2.h
class Test2
{
public:
Test2();
void display();
};
测试2.cpp
Test2::Test2()
{
}
void Test2::display()
{
((Test1*)currentpointer)->display();
}
的main.cpp
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Test1 obj1(100);
Test1 obj2(200);
Test1 obj3(300);
obj1.obj->display();
obj2.obj->display();
obj3.obj->display();
return a.exec();
}
响应:
空隙测试1 ::显示()300
空隙测试1 ::显示()300
空隙测试1: :显示器()300
我在这里做了什么错,有人可以帮我解决这个问题。
呃...你没有任何线程? (好吧,1,'main()'线程)。 – BoBTFish