Рефакторинг класса: наследование с параметром

У меня есть класс, объявленный с помощью этой формы

MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
...
}

Я хочу изменить его с помощью этой формы, которая выглядит следующим образом:

class MainWindow : QMainWindow, ui
{
MainWindow(QWidget *parent)
{
...
}
}

Но я удалил параметры, которые были в первой форме. Что означают эти параметры?

Как сохранить их во втором классе? Пожалуйста, объясните мне первый синтаксис (или укажите учебник). Я не понимаю наследование с параметрами.

РЕДАКТИРОВАТЬ:

Теперь я понимаю проблему, класс был инициализирован в отдельном файле .h, который я не видел с первого взгляда. Я подумал: после определения метода был оператор наследования, тогда как это оператор инициализации члена.

-1

Решение

Это реализация конструктора, вызывающая конструктор базового класса и инициализирующий член данных в списке инициализации:

MainWindow(QWidget *parent) :
QMainWindow(parent),   // call base class constructor
ui(new Ui::MainWindow) // initialize data member ui
{
...
}

Весьма вероятно, что класс наследует от QMainWindow и имеет Ui::MainWindow* элемент данных называется ui, Ваш второй фрагмент кода выглядит как неправильная попытка объявить класс. Как такового «наследования с параметрами» не существует, поэтому вы не можете делать то, о чем просите.

1

Другие решения

Во-первых constructor с initializer-list initialization и этот пример хорошо. Второй пример никогда не скомпилируется, так как это неправильный синтаксис. Посмотрите на это например В этом конкретном случае, есть ли разница между использованием списка инициализатора элемента и присвоением значений в конструкторе? для объяснений о первом синтаксисе.

0