Na gut, auch wenn‘s vom Thema weggeht, aber wenn es etwas genauer sein muss:
Ich kapsle sämtliche Member und Methoden in einer Basisklasse, mit der Überlegung, welche für wirklich alle Ableitungen sinnvoll wären und bestenfalls auch nicht mehr überschrieben werden müssen (obwohl bei Bedarf natürlich auch mal was überschrieben werden kann).
Und zu diesen Methoden gehören, an meine Bedürfnisse angepasst praktischster Weise die Transformation, Transformationsgrenzen (z.B. der Spielfeld-/Monitorrand), Texturen, Animation usw. Vielleicht irritiert hier lediglich die Bezeichnung Sprite, aber darunter stelle ich mir nun das vor, was da mit einer Textur versehen am Bildschirm angezeigt wird und z.B. bewegt werden kann. Kann eine Spielfigur oder auch ein Hintergrund sein. Letzteres braucht vielleicht nicht unbedingt eine Bounding Box (deswegen gibt es bei mir auch eine gesonderte class AdvancedSprite, welche wiederum von class Sprite abgeleitet ist und erst mit den Bounding Möglichkeiten ausgestattet ist), könnte aber durchaus bewegbar sein müssen.
Was ich nun davon ableite braucht im Normalfall all diese Methoden, hat aber vielleicht zusätzlich noch eine Lebenslinie, kann einen Schuss abfeuern usw.
Mit anderen Worten, ich habe eine Basisklasse die sich in den verschiedensten Projekten sehr einfach wiederverwenden lässt und schon lassen hat.
Wenn ich nun typedef weglasse und am Ende der Klasse, hinter der schließenden Klammer weiterhin z.B. „} Sprite, * LPSPRITE;“ stehen lässt, dann gibt’s (zumindest bei mir) einen Compilerfehler. Deswegen dachte ich mir, ich lass es da stehen
, denn eine derart definierte Pointervariable der Klasse zu haben ist nicht selten recht praktisch.
Werde mal versuchen, meinen Pointer ungecastet zu übergeben, obwohl ich mir gerade nicht vorstellen kann, dass mein Compiler das mitmacht.
@ bwbg
C alleine habe ich nie gelernt, kann daher auch nicht sagen, was von meinem Code ein C-Relikt ist und wie man es besser in C++ realisieren kann.
Danke für die Antworten!