Typ einer Klasse herausfinden
-
Hallo

Gibt es eine Möglichkeit folgende Funktionalität zu realisieren (sollte unter Win/Linux laufen)
// Natürlich Pseudocode, ich weiß ja nicht wie es geht void Switch(TypBasisklasse *b) { switch(b) { case TypBasisklasse: b->InitialisiereNeu(new TypBasisklasse())); case TypErbendeklasse1: b->InitialisiereNeu(new TypErbendeklasse1())); case TypErbendeklasse2: b->InitialisiereNeu(new TypErbendeklasse2())); } }
Geht so etwas? Wie konnte man das realisieren :)?
-
Ja, das geht - google doch mal nach "virtueller Konstruktor", da findest du sicher ein paar brauchbare Seiten.
-
@CStoll: Wieso virtueller Konstruktor und nicht RTTI?
@nureineüberlegung:
Ja. Sowas kannst du realisieren. Stichwort lautet Run Time Type Information (RTTI).Siehe dazu: http://www.math.uni-wuppertal.de/~axel/skripte/oop/oop17_8.html
bzw. google.Gruß Caipi
-
void Switch(TypBasisklasse *b) { b->InitialisiereNeu(); }Falls dich das nicht weiterbringt solltest du vielleicht darlegen was deine wirklichen Anforderungen sing bzw ggf relevante Umstände, z.B. dass sich TypBasisklasse & Söhne von dir nicht verändern lassen, erwähnen.

-
Das Problem sieht für mich nach einer simplen virtuellen reset Funktion in der Basisklasse aus, nach der das Objekt den gleichen Zustand hat wie nach dem default ctor. Oder hab ich da etwas falsch verstanden?
-
groovemaster schrieb:
Das Problem sieht für mich nach einer simplen virtuellen reset Funktion in der Basisklasse aus, nach der das Objekt den gleichen Zustand hat wie nach dem default ctor. Oder hab ich da etwas falsch verstanden?
Sehe ich genauso.
Hab sogar schon die Lösung gepostet
-
Hmm ja ihr habt Recht, dass ist sogar der einfachste Weg

-
Caipi schrieb:
@CStoll: Wieso virtueller Konstruktor und nicht RTTI?
Weil ich die Frage nicht gründlich genug gelesen habe
