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 везде, где это только возможно.
Потом меня достало, что при изменении формы в дизайнере пересобирается полпроекта, и я перешёл на агрегацию через указатель. С тех пор использую только её и доволен.