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