从基于 QObject 的类继承构造函数

Res*_*ion 6 c++ inheritance qt qobject

我有一个名为MiscData继承QObject并具有成员变量(模型)的类。然后是一堆继承MiscData并重新实现其虚函数来填充模型的其他类。所以它看起来像这样:

class MiscData : public QObject
{
    Q_OBJECT
public:
    explicit MiscData(QObject *parent = 0);
    QAbstractItemModel &model();
private:
    virtual void loadData() = 0;
private:
    QStandardItemModel m_Model;
}
Run Code Online (Sandbox Code Playgroud)

其中一个后代看起来像这样:

class LogData : public MiscData
{
    Q_OBJECT
public:
    using MiscData::MiscData;
private:
    virtual void loadData() override;
}
Run Code Online (Sandbox Code Playgroud)

我知道我必须使用显式构造函数,MiscData因为它初始化模型成员变量。using但我想知道在派生类中使用指令来继承MiscData这样的构造函数是否安全。

using QObject::QObject编辑:根据答案,在 MiscData 中使用似乎也是很好的事件。

Sim*_*rta 5

从 C++11 开始,看起来你所做的事情是完全正确的。

请参阅继承构造函数C++11 对象构造改进

请注意,这是一个“全有或全无”的功能;要么该基类的所有构造函数都被转发,要么都不转发。