Aribert Börner schrieb:
> class abBus : QObject, public Context, public List{
>
> Q_OBJECT
>
> public:
> int vid;
> int pid;
> int baudrate;
> int index;
> int empfangen;
>
> int ret_flowctrl;
>
> public:
> abBus();
> ~abBus();
>
> };
offenbar irgend eine Bussteuerung
> class MainWindow : public abBus, public QMainWindow
Das ist unlogisch.
Ein Mainwindow ist ein Grafikelement. Ein Fenster, das etwas anzeigt.
Aber ein derartiges Fenster ist KEINE Bussteuerung.
Innerhalb des Main WIndows existiert vielleicht eine Bussteuerung. Die
Bussteuerung ist innerer Bestandteil dieses Fensters. Aber ein Fenster
IST KEINE Bussteuerung.
Das ist so wie ein Auto einen Motor HAT. Aber ein Auto IST KEIN Motor!
Deine Klassenhierarchieen werden wesentlich besser, wenn du dich an eine
relativ einfache Daumenregel hältst:
Besteht zwischen 2 Klassen eine "IST-EIN" Beziehung, dann willst du eine
Klasse von der anderen ableiten.
Besteht aber zwischen den beiden Klassen eine "HAT-EIN" Beziehung, dann
bedeutet das, dass es einen entsprechenden Daten-member gibt.
Ein Auto IST EIN Kraftfahrzeug1 | class Kraftfahrzeug
|
2 | {
|
3 | ...
|
4 | };
|
5 |
|
6 | class Auto : public Kraftfahrzeug
|
7 | {
|
8 | ...
|
9 | };
|
Aber:
Ein Kraftfahrzeug HAT EINEN Motor
1 | class Motor
|
2 | {
|
3 | ...
|
4 | };
|
5 |
|
6 | class Kraftfahrzeug
|
7 | {
|
8 | ...
|
9 | protected:
|
10 | Motor motor_;
|
11 | };
|
und um Mehrfach-Ableitung solltest du sowieso einen Bogen machen. Die
wirft mehr Probleme auf, als sie meistens löst. Wenn man mehrfach
ableitet, dann eher im Sinne von Interfaces, so wie das Java
vorexerziert.