我有一个类MiscData
继承QObject
并有一个成员变量(模型)。然后一堆继承MiscData
的其他类并重新实现其虚拟函数来填充模型。所以它看起来像这样:从基于QObject的类继承构造函数
class MiscData : public QObject
{
Q_OBJECT
public:
explicit MiscData(QObject *parent = 0);
QAbstractItemModel &model();
private:
virtual void loadData() = 0;
private:
QStandardItemModel m_Model;
}
和后代的一个看起来是这样的:
class LogData : public MiscData
{
Q_OBJECT
public:
using MiscData::MiscData;
private:
virtual void loadData() override;
}
我知道,因为它初始化模型成员变量我必须用一个明确的构造函数MiscData
。但我想知道在派生类中使用using
指令是否安全继承MiscData
的构造函数是这样的。
编辑:基于这个答案,在MiscData中使用using QObject::QObject
似乎也不错。
它是安全的。 'MiscData :: MiscData'是公开的。你有什么问题? – 2015-03-31 08:26:06
@SaZ我没有问题呢。 :-)我只是想知道在继承树和Q_OBJECT宏中有QObject时是否安全。我不知道QObject派生类的构造函数是否必须在所有派生类中显式化(例如设置属性),或者我可以继承它,就像我展示的那样。 – Resurrection 2015-03-31 08:36:18
在你的情况下,下一个ctors将被调用:'QObject(nullptr)' - >'MiscData(0)' - >'LogData()'。 – 2015-03-31 08:51:38