Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Welche Klasse ist es denn nun?
theromi - So 12.10.08 03:04
Titel: Welche Klasse ist es denn nun?
Hi,
ich habe mehrere Klassen, die alle eine Prozedur mit dem Namen "collide" haben. Sie zeigen sich auch alle (mehrfach) auf dem Bildschirm. Wenn der User nun einen Klick macht, wird festgestellt welches Objekt er gerade getroffen hat und dessen "collide" soll aufgerufen werden. Das Problem ist nun, dass ich nicht einfach Objekt.collide machen kann, sondern den richtigen Typ dahinter casten muss ("(Objekt as Klasse).collide").
Muss ich jetzt wirklich alle möglichen Klassen, die ich habe, mit "is" durchgehen um zu gucken, was genau sie sind, um diese dann anzusteuern? Das ist irgentwie ziemlich unflexibel, weil ich das später auch noch mal erweitern will.
Danke schonmal,
Roman
jaenicke - So 12.10.08 08:39
Warum musst du casten? Das hört sich nach einem nicht durchdachten Konzept an...
Normalerweise hast du in einem solchen Fall in einer Oberklasse die Methode drin, ggf. nur abstrakt sonst virtuell, und in den abgeleiteten Klassen überschreibst du die. Dann hast du eine Variable der Oberklasse, in der eine abgeleitete Klasse drin liegt, und rufst die Methode direkt von der Variablen der Hauptklasse auf. Durch das Überschreiben wird aber die der abgeleiteten Klasse automatisch aufgerufen.
theromi - So 12.10.08 13:46
Ja, sowas hab ich mir schon gedacht. Danke für die Antwort, dann bau ich ein bisschen um, geht auch.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!