是否有可能为QObject的父级使用共享指针?
我有一个启动类因此它设置在构建物的SystemController
:是否有可能为QObject的父级使用共享指针?
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类\ struct中。然后,你可以有
class SystemController : public QObject, public SystemSettings
或
class SystemController : public QObject
{
SystemSettings m_settings;
SystemSettings systemSettings() {m_settings};
}
,并根据需要随意修改设置。
其实我想我刚刚意识到你的意思。你的意思是我应该创建一个SystemController设置类,它可以将变量保存在一个简单的POD中? – fiz 2014-09-29 09:10:07
是的,一个类只是重新组合变量。没有信号。没有插槽。没有复杂的逻辑***。这个'SystemSettings'类可以由SystemController通过第二个设计选项在信号中发送。 – UmNyobe 2014-09-29 09:11:57
@UmNyobe,我想你应该添加“SystemSettings类可以通过SystemController发送一个信号”到你的答案 – 2014-09-29 09:53:44
不使用单身人士。 99.9%的案例不妙。 – UmNyobe 2014-09-29 08:38:57
@UmNyobe - 关于该怎么做的任何想法? – fiz 2014-09-29 08:39:38
'我最近虽然想要在一个线程类中使用这个类,它不喜欢我将SystemController传递给我,因为这个线程类没有父类'这行很难理解 – UmNyobe 2014-09-29 08:40:58