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

C++ Access data member of another class

本文关键字:数据成员 另一个 访问 C++      更新时间:2023-10-16

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

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

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

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

其他想法?

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

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

像这样:ClassName::StaticVariable

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

由于

一种称为排队连接的机制,跨不同线程连接信号和插槽是安全的。所以一种选择可能是连接来自线程的信号

signals:
    void threadCreated();

来自主线程的某个对象,即您的类线程计数器的实例:

class ThreadCounter : public QObject
{
    Q_OBJECT
    int count;
public slots:
    void increaseCountVariable() {
        count++;
    }
//...
};

并连接它们:

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

从Qt页面:

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