CC++Qt « Агрегация или множественное наследование Qt?

Вопрос, как вы считаете, что удобнее использовать множественное наследование или агрегацию при создании класса отвечающего за обработку событий в интерфейсе.
Краткие примеры.
Агрегация (через указатель)

class MainWindow : public QMainWindow
{
Q_OBJECT
Ui::MainWindow *ui;
public:
MainWindow(void);
}

Множественное наследование:

class MainWindow : public QMainWindow, public Ui::MainWindow
{
Q_OBJECT
public:
MainWindow(void);
}

1 ответов


Если в классе используется только один UI::Interface, то можно использовать подход множественного наследования. В случае, когда нужно использовать UI::Interface1 и UI::Interface2 одновременно, удобнее будет их агрегировать.

В общем то преимущества и недостатки каждого из подходов описаны в документации.

Кстати, наследоваться от UI::Interface лучше приватно, иначе члены этого UI::Interface будут торчать из наследника наружу.


Лично я сначала некоторое время использовал наследование, потому что по неопытности старался избегать new/delete везде, где это только возможно.
Потом меня достало, что при изменении формы в дизайнере пересобирается полпроекта, и я перешёл на агрегацию через указатель. С тех пор использую только её и доволен.