von zwei klassen ableiten (war: Evi48)
-
Hallo,
ich möchte eine neue Klasse erstellen, die aber als Basisklassen TThread und TComponent hatz.B. Class MyClass : public TThread, TComponent
Danke
Evi48<edit>Bitte aussagekräftige Überschriften wählen! Danke.</edit>
[ Dieser Beitrag wurde am 10.07.2003 um 08:42 Uhr von junix editiert. ]
-
und wo ist da das problem??? du musst evtl. deine frage genauer formulieren... genau wie deine überschrift
-
bist du dir sicher das du das wirklich brauchst? mehrfachvererbung benutzt man eigentlich nur ganz ganz selten.
-
Meines Wissens geht das nicht, dass du von zwei klassen erben kannst. Ist aber grundsätzlich ein C++ problem, deshlab schieb ich dich auch mal da hin...
->Verschoben.
-
class MyClass : public TThread, public TComponent
sieht normaler aus, also von beiden öffentlich erben.
-
Original erstellt von junix:
**Meines Wissens geht das nicht, dass du von zwei klassen erben kannst.
**
-
Hallo,
so langsam schliesse ich mich der Meinung an "Das geht nicht". Da muss ich mir leider was anderes überlegen.Danke
Evi48
-
Ja was denn? (o: Dann gehts hald. Müsste aber in meinen Augen verboten sein. Ist ja für die Übersicht katastrophal...
-junix
-
Original erstellt von junix:
Ja was denn? (o: Dann gehts hald. Müsste aber in meinen Augen verboten sein. Ist ja für die Übersicht katastrophal...
-junixin java verbietet am alles, was einen durchschnittlichen programmierer überlasten könnte. in c++ soll es so verbote nicht geben. hat halt den vorteil, daß man so verrückte sachen zu not auch mal machen kann.
-
Die VCL Klasen sind in Objekt-Pascal sprich Delphi geschrieben. Ich meine gelesen zu haben, daß Delphi bisher keine Mehrfachvererbung unterstützt sondern erst ab Delphi .net. Vielleicht liegts ja daran
-
Kann mich mal einer aufklären was die Antworten jetzt sollen? Die Vorschläge habe ich getestet und auch das funktioniert nicht.
Evi48
-
Hallo Peter,
das kann natürlich sein. Ich benutze noch den Builder 5, der sicher noch nicht die Klassen von .net benutzt.Danke
Evi48
-
Also, es ist für VCL-Klassen (erkennbar am großen "T" im Namen) ebenso wie für MFC-Klassen (erkennbar am großen "C") verboten eine Mehrfachvererbung zu konstruieren.
C++ erlaubt das.
Die Framework-Klassen erlauben es nicht.
Punkt, aus, basta - an dem Punkt braucht Ihr nicht weiter diskutieren, das war eine Festlegung der Framework-Designer.
Du willst einen Komponente bilden, die einen Thread enthält? Dann ist die wesentliche Eigenschaft die Komponente, TComponent. Führe TThread dann als Membervariable von TComponent ein, also sowas:
class EviComponent : public TComponent { ... private: TThread* m_pTThread; // VCL-Klassen lassen sich nur über Zeiger // instanziieren };
Die notwendigen Methoden zur Steuerung des Threads mußt Du in der Komponentenklasse realisieren und an das TThread-Objekt durchreichen.
Das funzt ohne Probleme und löst Dein Problem vollständig.
[Willkommen in der wunderbaren Welt von C# und Java ohne Mehrfachvererbung.]
-
Hallo Marc++us,
vielen Dank für deine Info, ich werde das so machen.Evi48
-
Und wie verhindern die Framework-Klassen VCL und MFC Mehrfachvererbung?
-
Original erstellt von Marc++us:
[Willkommen in der wunderbaren Welt von C# und Java ohne Mehrfachvererbung.]blaue oder rote pille?
-
Original erstellt von Marc++us:
Also, es ist für VCL-Klassen (erkennbar am großen "T" im Namen) ebenso wie für MFC-Klassen (erkennbar am großen "C") verboten eine Mehrfachvererbung zu konstruieren.Das ist falsch. Ich habe schon mehrfach von MFC-Klassen abgeleitet. Z.B. von CMap und CMutex.
-
Original erstellt von <Frage>:
Und wie verhindern die Framework-Klassen VCL und MFC Mehrfachvererbung?Die verhindern das doch nicht. Du kannst z.B. von MyListItem und CComboBox erben. Das geht ohne Probleme und kann in einigen Fällen ziemlich nützlich sein.
EDIT: Hmmm, ich sollte vor dem Posten auch die 2. Seite lesen . über diesem Eintrag steht fast das gleiche...
[ Dieser Beitrag wurde am 10.07.2003 um 11:18 Uhr von MaSTaH editiert. ]
-
[ Dieser Beitrag wurde am 10.07.2003 um 11:21 Uhr von MaSTaH editiert. ]
-
Aber Marc++us hatte geschrieben:
Die Framework-Klassen erlauben es nicht.