У меня есть класс, объявленный с помощью этой формы
MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
...
}
Я хочу изменить его с помощью этой формы, которая выглядит следующим образом:
class MainWindow : QMainWindow, ui
{
MainWindow(QWidget *parent)
{
...
}
}
Но я удалил параметры, которые были в первой форме. Что означают эти параметры?
Как сохранить их во втором классе? Пожалуйста, объясните мне первый синтаксис (или укажите учебник). Я не понимаю наследование с параметрами.
РЕДАКТИРОВАТЬ:
Теперь я понимаю проблему, класс был инициализирован в отдельном файле .h, который я не видел с первого взгляда. Я подумал: после определения метода был оператор наследования, тогда как это оператор инициализации члена.
Это реализация конструктора, вызывающая конструктор базового класса и инициализирующий член данных в списке инициализации:
MainWindow(QWidget *parent) :
QMainWindow(parent), // call base class constructor
ui(new Ui::MainWindow) // initialize data member ui
{
...
}
Весьма вероятно, что класс наследует от QMainWindow
и имеет Ui::MainWindow*
элемент данных называется ui
, Ваш второй фрагмент кода выглядит как неправильная попытка объявить класс. Как такового «наследования с параметрами» не существует, поэтому вы не можете делать то, о чем просите.
Во-первых constructor
с initializer-list initialization
и этот пример хорошо. Второй пример никогда не скомпилируется, так как это неправильный синтаксис. Посмотрите на это например В этом конкретном случае, есть ли разница между использованием списка инициализатора элемента и присвоением значений в конструкторе? для объяснений о первом синтаксисе.