• 5005阅读
  • 3回复

新手提问一个简单问题,大牛免进,省的看了生气 [复制链接]

上一主题 下一主题
离线67284727
 

只看楼主 倒序阅读 楼主  发表于: 2010-03-29
class mythread:public QThread
{
    Q_OBJECT
public:
    mythread();
    int test2a;
    virtual void run();
signals:
    void threaddata(QString test);



};

我定义mythread里面有一个test2a变量,但是在另一个窗口类里面生命了一个mythread test2thread;
这个test2a在thread的run函数里面赋值为100,但是在窗口类里面调用test2thread.test2显示的时候确是随机的值,大侠们告诉我究竟为什么?
为什么不能声明把test2a为private变量呢??求解

谢谢大家了
离线yb824
只看该作者 1楼 发表于: 2010-03-30
你能确定是先赋值再显示的么
离线ortejia

只看该作者 2楼 发表于: 2010-03-30
我很生气...
离线snowdream
只看该作者 3楼 发表于: 2010-03-30
说下我的理解:
你用的是这种形式:
mythread test2thread;

当线程运行结束后,test2a也就被释放了。
你再访问test2thread.test2就是一个无效值。
除非你阻塞进程,这个时候你可以看到test2a还在,等于100.
详见附件~
附件: qthreadvar.tar.gz (3 K) 下载次数:5
QQ:273247606
希望与大家一起交流QT~
快速回复
限100 字节
 
上一个 下一个