@sddvxd

Почему не вызвать конструктор с производным классом в аргументе?

Здравствуйте

Я наследую класс QItemSelectionModel. Вот его конструкторы:

explicit QItemSelectionModel(QAbstractItemModel *model = nullptr);
    explicit QItemSelectionModel(QAbstractItemModel *model, QObject *parent);


Класс QAbstractItemModel унаследован от QObject. Я пытаюсь вызвать его в производном классе:

SimpleItemSelectionModel::SimpleItemSelectionModel(QObject *parent) : QItemSelectionModel (parent)


IDE помечает эту строчку с ошибкой "не найден конструктор для инициализации `QItemSelectionModel`"

На конструкторы это правило не распространяется что-ли? Когда можно оперировать указателями на базовые классы, оперируя объектами производных?
  • Вопрос задан
  • 95 просмотров
Решения вопроса 1
@sddvxd Автор вопроса
Человек оставил ответ, но почему-то удалил

Проблема была в explicit. Компилятору все равно, что я передаю объект базового класса

SimpleItemSelectionModel::SimpleItemSelectionModel(QObject *parent) : QItemSelectionModel (dynamic_cast<QAbstractItemModel*>(parent))
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Nipheris
@Nipheris Куратор тега C++
Когда можно оперировать указателями на базовые классы, оперируя объектами производных?

А вам не кажется что у вас ситуация с точностью до наоборот? Вы пытаетесь объект базового класса QObject передать под видом объекта производного класса QAbstractItemModel.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы