Seite 1 von 1

vererbung probleme

Verfasst: 31. August 2008 18:39
von Over
tag leute, ich hab folgendes problem.
ich hab eine klasse A welche (für connect usw.) von QWidget erbt, und eine klasse B welche von klasse A UND QMainWindow erben soll (weils halt QMainWindow elemente benötigt).
also:

Code: Alles auswählen

class A : public QWidget
{
      Q_OBJECT
	protected:
		void methoden();
       usw.
};
class B : public A, public QMainWindow
{
      Q_OBJECT
	public:
		B(QMainWindow *parent = 0, Qt::WindowFlags flags = 0);
       usw.
};
so, problem an der sache ist dass ich dann ne menge errors bekomm wie zb:

Code: Alles auswählen

.\MyWin.cpp(35) : error C2385: ambiguous access of 'connect'
        could be the 'connect' in base 'QObject'
        or could be the 'connect' in base 'QObject'
hab auch schon versucht klasse A direkt von QMainWindow erben zu lassen, und B nurnoch von A, jedoch bekomm ich dann auch n error:

Code: Alles auswählen

 .\MyWin.cpp(25) : error C2614: 'B' : illegal member initialization: 'QMainWindow' is not a base or member 
was mach ich falsch? ._.
hoffe ihr könnt mir helfen
thx, over

Verfasst: 31. August 2008 20:09
von Christian81
Du leitest zweimal von QWidget ab - wie soll das je funktionieren und was soll das überhaupt werrden?

Verfasst: 31. August 2008 20:31
von upsala
Genauer gesagt leitet er 2x mal von QObject ab und das wird bemängelt, da es nicht erlaubt ist...

Verfasst: 1. September 2008 11:27
von Over
ja ._.
ich will halt mehr struktur rein bringen.
anstellle einer riesigen klasse eine klasse welche sich nur um die toolbar kümmert, eine die sich nur um MDI kümmert usw.und die main klasse soll dann halt davon erben.

Verfasst: 1. September 2008 11:34
von RHBaum
Naja Baukastenprinzip und Vererbung beisst sich halt ...

Baukasten = wiederverwendung
Vererbung = Polymorphie also vielgestaltigkeit.

und eine der Grundregeln fuer gutes Design lautet halt, vererbe nie nur um wiederzuverwenden.

Fuer "baukaesten" sollt man eher aggregation verwenden, nur muss man dann alle funktionen "durchschleifen". was auf der einen seite zwar laestig ist, auf der anderen seite aber spaeter viel viel aerger (und damit Arbeit) erpsaren kann ....

Ciao ...