是否可以为QObject的父级使用共享指针
Is It Possible to Use a Shared Pointer for the Parent of a QObject?
我有一个启动类,它在构造中设置一个SystemController
:
m_systemController(new SystemController(this,
Provider::getSettingsAsSingleton())),
本质上这满足:
public:
explicit SystemController(QObject *parent,
Settings& config);
不过,我最近想在线程类中使用这个类,这不喜欢我传递SystemController
,因为线程类没有父级。我试着这样通过:
public:
explicit DataTestWorker(QObject *parent=0);//,
//SystemController &sysCtrl); //Obviously in my setup, it would complain about this
其中DataTestWorker
类实际上是线程类,在DataTest
类中初始化。我想传递SystemController
的内存位置的原因是Controller类中已经设置了重要数据,我希望访问这些数据,而不必再次在其中运行所有初始化方法。
有没有一种方法可以以某种方式传递某种"共享"指针-在这种指针中,不仅这个类,其他类都可以访问它。我能想到的唯一方法是,我可以使用DataTest
和DataTestWorker
类之间的信号和插槽来操作SystemController
中的值,但这将是漫长而冗长的。
有什么想法吗?如果您需要更多信息,只需询问即可。
是否可以为QObject的父级使用共享指针?
没有。没有属于QObject子类的共享指针。我不明白为什么这会有意义。
我想传递SystemController的内存位置的原因,控制器类具有已经在该类中设置的重要数据,我希望在不需要运行所有初始化的情况下访问方法。
为什么不将SystemController settings
的概念分离到另一个POD类\结构中呢。然后你可以有
class SystemController : public QObject, public SystemSettings
或
class SystemController : public QObject
{
SystemSettings m_settings;
SystemSettings systemSettings() {m_settings};
}
并根据您的意愿随意设置。
您可以将SystemController
设置为Singleton,并设置QMutex
保护来访问并发线程中使用的SystemController's
私有数据。
相关文章:
- 如何从具有移动语义的类对象中生成共享指针
- 使用共享指针的函数调用,其对象应为 const
- 共享指针和具有自定义删除程序的唯一指针之间的语法差异背后的任何原因
- 如何访问由共享指针保存的类方法?
- 从矢量或地图中删除共享指针
- 使用共享指针时,从共享指针本身释放内存的机制是什么
- 使用共享指针实现复制 c'tor?
- 共享指针继承,而不先显式强制转换
- 如何检查类中共享指针的有效性?
- std::排序在共享指针的向量上
- 将相同共享指针的副本存储在不同的向量中是否是一种好的做法?
- 嵌套类、继承和C++中的共享指针
- 制作一对共享指针并推送一个向量
- 如何将共享指针用作函数参数
- 是否可以/希望创建不可复制的共享指针模拟(以启用weak_ptr跟踪/借用类型语义)?
- 尝试通过共享指针使用变量时读取访问冲突
- 如何将元素插入到标准::地图的共享指针中?
- 共享指针生存期
- 初始化可变数据结构中的共享指针向量
- 阻止在返回时复制共享指针