J'ai une classe appelée MiscData
qui hérite QObject
et possède une variable membre (un modèle). Et puis tas d'autres classes qui héritent MiscData
et réimplémenter sa fonction virtuelle pour peupler le modèle. Donc, il ressemble à ceci:Hériter du constructeur à partir de la classe QObject
class MiscData : public QObject
{
Q_OBJECT
public:
explicit MiscData(QObject *parent = 0);
QAbstractItemModel &model();
private:
virtual void loadData() = 0;
private:
QStandardItemModel m_Model;
}
et l'un des descendant ressemble à ceci:
class LogData : public MiscData
{
Q_OBJECT
public:
using MiscData::MiscData;
private:
virtual void loadData() override;
}
Je sais que je dois utiliser un constructeur explicite pour MiscData
car il initialise la variable membre du modèle. Mais je me demande s'il est prudent d'utiliser la directive using
dans la classe dérivée pour hériter du constructeur de MiscData
comme ceci.
EDIT: Basé sur la réponse, il semble être bon événement à utiliser using QObject::QObject
dans le MiscData aussi.
Il est sûr. 'MiscData :: MiscData' est public. Quel problème as-tu? –
@SaZ Je n'ai pas encore de problème. :-) Je me demandais juste s'il est sûr de le faire quand il y a QObject dans l'arbre d'héritage et la macro Q_OBJECT. Je ne savais pas si le constructeur d'une classe dérivée de QObject doit être explicite dans toutes les classes dérivées (pour définir des propriétés par exemple) ou je peux en hériter comme je l'ai montré. – Resurrection
Dans votre cas, les prochains cteurs seront appelés: 'QObject (nullptr)' -> 'MiscData (0)' -> 'LogData()'. –