Natürlich können Sie das. Ich frage mich nur, ob es rational ist, so zu gestalten.
Ich mache einen Breakout-Klon und mache ein Klassendesign. Ich wollte die Vererbung verwenden, obwohl ich das nicht muss, um das anzuwenden, was ich in C ++ gelernt habe. Ich habe über Klassendesign nachgedacht und mir so etwas ausgedacht:
GameObject -> Basisklasse (besteht aus Datenelementen wie x- und y-Offsets und einem Vektor von SDL_Surface *
MovableObject: GameObject -> abstrakte Klasse + abgeleitete Klasse von GameObject (eine Methode void move () = 0;)
NonMovableObject: GameObject -> leere Klasse ... keine anderen Methoden oder Datenelemente als Konstruktor und Destruktor (zumindest für den Moment?).
Später plante ich, eine Klasse von NonMovableObject abzuleiten, wie Tileset: NonMovableObject. Ich habe mich nur gefragt, ob häufig "leere" abstrakte Klassen oder nur leere Klassen verwendet werden ... Ich stelle fest, dass ich auf diese Weise nur die Klasse NonMovableObject nur zur Kategorisierung erstelle.
Ich weiß, dass ich Dinge überdenke, nur um einen Breakout-Klon zu erstellen, aber mein Fokus liegt weniger auf dem Spiel als vielmehr auf der Verwendung von Vererbung und dem Entwerfen einer Art Spiel-Framework.
MovableObject
nochNonMovableObject
voneinander erben, doch haben beide einen Standort. Als solche sollten beide durch Code konsumiert werden können, der z. B. das Ziel eines Monsters auf ein Objekt richten möchte, ohne Rücksicht darauf, ob sich dieses Objekt bewegen könnte oder nicht.