Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;访问另一个类的数据成员_C++_Multithreading_Qt_Counter_Qthread - Fatal编程技术网

C++ C++;访问另一个类的数据成员

C++ C++;访问另一个类的数据成员,c++,multithreading,qt,counter,qthread,C++,Multithreading,Qt,Counter,Qthread,我正在用Qt创建一个简单的多线程应用程序,我想打印从thread类(QThread)中的函数创建的线程数 例如,如果我创建了3个T类线程,函数T.printcount应该打印出“3个活动线程” 我假设我将在T类(可能是主线程)之外创建一个变量,并从thread类进行访问。我该怎么做 在类T中创建一个虚拟静态变量并访问它是否更好 其他想法?引用:如果我创建了3个T类线程,函数T.printcount应该打印出“3个活动线程” 在这种情况下,最好在类中创建一个静态变量,然后在每次创建对象时更新它。

我正在用Qt创建一个简单的多线程应用程序,我想打印从thread类(QThread)中的函数创建的线程数

例如,如果我创建了3个T类线程,函数T.printcount应该打印出“3个活动线程”

我假设我将在T类(可能是主线程)之外创建一个变量,并从thread类进行访问。我该怎么做

在类T中创建一个虚拟静态变量并访问它是否更好


其他想法?

引用:如果我创建了3个T类线程,函数T.printcount应该打印出“3个活动线程”

在这种情况下,最好在类中创建一个静态变量,然后在每次创建对象时更新它。 您可以访问静态变量,而无需函数btw

类似于:ClassName::StaticVariable


如果要通过函数打印类的静态变量,请不要忘记将该函数设置为静态。

由于一种称为的机制,跨不同线程连接信号和插槽是安全的。因此,一种选择可能是连接来自线程的信号

signals:

    void threadCreated();
从主线程到某个对象,即类ThreadCounter的实例:

class ThreadCounter : public QObject
{
    Q_OBJECT
    int count;

public slots:
    void increaseCountVariable() {
        count++;
    }
//...
};
并将它们连接起来:

connect(myThread, &MyThread::threadCreated, myThreadCounter,
                    &ThreadCounter::increaseCountVariable);
发件人:

请务必记住,QThread对象通常位于 创建它的线程,而不是在它管理的线程中。注意:如果使用排队信号/插槽连接(例如直接函数调用)以外的任何技术与对象交互,则需要采取通常的多线程预防措施


虚拟变量?这是什么?虚拟静态,嗯。你们是指类中的静态函数吗?你们可以使用
static
变量来保持实例的数量。当然,你需要注意比赛条件(QMutex?)。