C++访问另一个类的数据成员
C++ Access data member of another class
我正在使用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对象通常位于 创建线程的线程,而不是在其管理的线程中。注意:如果您使用队列信号/时隙连接以外的任何技术(例如直接函数调用)与对象进行交互,则需要采取通常的多线程预防措施。
相关文章:
- 为什么将一个结构的引用设置为等于另一个结构只会更改一个数据成员?
- C++:成员不可访问-使用友元函数允许一个类修改另一个类的成员数据
- 返回带有另一个类的数据成员的构造函数?遇到转换错误?
- 从一个类的数据成员的值从另一个类更改
- 从其后声明的另一个成员数据初始化成员数据是否为未定义行为
- 从另一个命名空间访问标准命名空间数据成员
- 是否有必要重载具有另一个类 B 的数据成员的类 A 的赋值运算符和复制构造函数?
- 静态const数据成员在另一个文件中定义
- 将映射的每个键中的数字数据与另一个数值进行比较
- 如何在C 中的另一个对象的同一数据成员中输入另一个字符串
- 非静态数据成员和一个定义规则
- 如何创建一个将队列作为数据成员的类,该成员在 c++ 中存储另一个类的实例
- 参考数据会在const函数中更改另一个数据成员
- 在C++中,"static initialization fiasco"是否仅影响对另一个模块中定义的对象的数据成员的引用?
- 在重载运算符中访问另一个类的数据成员
- 并集:从并集的一个数据成员中读取数据,然后写入另一个
- 如何在另一个类数据成员上定义“std::set”排序
- 作为另一个类的数据成员的类
- C++访问另一个类的数据成员
- 为数据成员分配一个新的随机方向,该方向不同于 c++ 中的当前方向