Auf welchen Typ zeigt mein Zeiger?



  • Hey,
    Ich habe eine Basisklasse und 3 abgeleitete Klassen. Ich habe nur einen Zeiger, der immer zwischen Objekten dieser 3 Klassen wechselt. Gibt es eine Möglichkeit herrauszufinden von welcher Klasse das Objekt ist auf das mein Zeiger zeigt?`

    Ich könnte eine Funktion schreiben, die ausgibt von welcher Klasse das Objekt ist, aber gibt es da nicht eine bessere Lösung?

    Hoffe ihr könnt mir helfen.

    LG Catalamo



  • Es gibt type_info und dynamic_cast. Aber wenn du die Info brauchst, hast du wahrscheinlich was falsch gemacht. Evtl. ist eine Funktion um den Typ abzufragen (nicht ausgeben) doch die bessere Variante. z.B. wenn du irgendwelche Shapes hast, die du zeichnen willst, könnte eine Funktion getShapeType schon Sinn machen bzw. würde zumindest nicht so sehr stören.



  • Die richtige Variante wäre jedoch der Einsatz virtueller Funktionen.

    Explizite Typunterscheidungen sind fast immer ein Anzeichen für schlechtes Design. Der Abstraktionsgedanke hinter Laufzeitpolymorphie besteht gerade darin, davon wegzukommen.



  • Catalamo schrieb:

    Ich könnte eine Funktion schreiben, die ausgibt von welcher Klasse das Objekt ist, aber gibt es da nicht eine bessere Lösung?

    Wozu meinst du das zu brauchen?
    Meist braucht man es nämlich nicht.
    D.h. du musst dir erstmal klarmachen was du eigentlich erreichen willst.

    Und meistens ist das eben nicht draufzukommen was für nen Typ ein bestimmtes Objekt hat.


Anmelden zum Antworten