Autor Beitrag
theromi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: So 12.10.08 03:04 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 22



BeitragVerfasst: 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.