Noch ne frage zum casten



  • Habe eine Klassen struktur aus Basis und 3 abgeleitet klassen A,B,C

    diese speicher ich in nem gemeinsame array, später beim auslesen cast ich den typ per static_cast bzw. dynamic_cast!!

    Gibt es noch nen cast operator der mit nen BOOL zurück gibt ob es der A,B, C ist?

    Bsp;

    Basis *p = new A();
    Basis *p = new B();
    Basis *p = new C();
    .
    .
    .
    array.Add(p);
    
    if((array.ElementAt(x) TYPE A)== TRUE)
    .....
    

    wobei TYPE A nur erfunden ist , aber ich mich frage ob es sowas tatsächlich gibt... hoffe ihr wisst was ich meine



  • BorisDieKlinge schrieb:

    Gibt es noch nen cast operator der mit nen BOOL zurück gibt ob es der A,B, C ist?

    Vergleich doch einfach den Rückgabewert von dynamic_cast mit 0, dann hast du deinen bool.



  • wobei dir dynamic_cast<A*>(x)!=0 nur sagt, ob x auf ein A oder eine von A abegeleitete Klasse zeigt.



  • BorisDieKlinge schrieb:

    Habe eine Klassen struktur aus Basis und 3 abgeleitet klassen A,B,C

    diese speicher ich in nem gemeinsame array, später beim auslesen cast ich den typ per static_cast bzw. dynamic_cast!!

    Warum nur? Entweder der genaue Typ ist relevant, dann ist eine heterogene Liste nicht angebracht, oder er ist es nicht, dann macht auch die heterogene Liste sinn.

    Ein Test-Type-and-Switch-Ansatz ist im Allgemeinen wirklich keine gute Idee.

    wobei dir dynamic_cast<A*>(x)!=0 nur sagt, ob x auf ein A oder eine von A abegeleitete Klasse zeigt.

    Wenn es wirklich auf den genauen Typ ankommt, hilft ein Vergleich des Ergebnisses von typeid mit dem passenden Typeinfo-Objekt.

    typeid(*ptr) == typeid(ClassType);
    

Log in to reply