Objekte verschiedenen Types in eine Variable
-
Hi,
ich benötige eine Variable, der ich Objekte von verschiedennen Klassen zuordnen kann.
Wenn ich mich richtig erinnere, ging das in Java wie folgt:
Auto VW = new Auto();
Fahhrad BMX = new Fahrrad();
Object Fahrzeug;Fahrzeug = VW;
Fahrzeug = BMX;
Hierbei gab es meines Wissens noch Limitierungen, sodass Typecasts verwendet werden mussten, ich weiß aber nicht mehr so recht, wie...
Geht so etwas auch in C++?
-
Es gibt keine gemeinsame Oberklasse in C++. Das was du da hast würde gehen, wenn du beispielsweise eine Oberklasse Fahrzeug hättest, von der Fahrrad und Auto abgeleitet sind. Da Objektvariablen in C++ wirklich die Objekte selbst bezeichnen, und nicht wie in Java Objektreferenzen darstellen, muss man mit Zeigern arbeiten:
Auto* vw = new Auto(); Fahrrad* bmx = new Fahrrad(); Fahrzeug* fahrzeug; fahrzeug = vw; fahrzeug = bmx;(Mit Referenzen funktioniert das so ähnlich, die kann man allerdings nur bei der Initialisierung binden und später nicht mehr ändern)
Das einzige, was sowas ähnliches wie eine gemeinsame Oberklasse für alles darstellt ist ein void-Pointer. Der kann allerdings wirklich auf alles zeigen, nicht nur auf Objekte mit Klassentypen, daher ist es nachträglich nicht mehr, analog Javas typeof, möglich, den Typ zu erfragen und wieder zurückzucasten.
-
Alles klar, danke.