Certo che puoi, mi chiedo solo se è razionale progettare in questo modo.
Sto creando un clone di successo e stavo facendo un po 'di design di classe. Volevo usare l'ereditarietà, anche se non è necessario, per applicare ciò che ho imparato in C ++. Stavo pensando al design di classe e ho pensato a qualcosa del genere:
GameObject -> classe base (è composta da membri di dati come offset xey, e un vettore di SDL_Surface *
MovableObject: GameObject -> classe astratta + classe derivata di GameObject (un metodo void move () = 0;)
NonMovableObject: GameObject -> classe vuota ... nessun metodo o membro di dati diverso da costruttore e distruttore (almeno per ora?).
Più tardi stavo pianificando di derivare una classe da NonMovableObject, come Tileset: NonMovableObject. Mi stavo solo chiedendo se le classi astratte "vuote" o solo le classi vuote sono spesso usate ... Ho notato che nel modo in cui sto facendo questo, sto solo creando la classe NonMovableObject solo per motivi di categorizzazione.
So che sto pensando troppo alle cose solo per creare un clone di breakout, ma il mio focus è meno sul gioco e più sull'uso dell'eredità e sulla progettazione di una sorta di framework di gioco.
MovableObject
néNonMovableObject
possono ereditare l'uno dall'altro, entrambi hanno una posizione; come tale, entrambi dovrebbero essere consumabili da un codice che, ad esempio, vuole indirizzare l'obiettivo di un mostro verso un oggetto senza considerare se tale oggetto possa muoversi o meno.