@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.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы