Por supuesto que puedes, solo me pregunto si es racional diseñar de esa manera.
Estoy haciendo un clon y estaba haciendo un diseño de clase. Quería usar la herencia, aunque no es necesario, para aplicar lo que aprendí en C ++. Estaba pensando en el diseño de clase y se me ocurrió algo como esto:
GameObject -> clase base (consta de miembros de datos como desplazamientos xey), y un vector de SDL_Surface *
MovableObject: GameObject -> clase abstracta + clase derivada de GameObject (un método void move () = 0;)
NonMovableObject: GameObject -> clase vacía ... no hay métodos o miembros de datos que no sean constructor y destructor (¿al menos por ahora?).
Más tarde, planeaba derivar una clase de NonMovableObject, como Tileset: NonMovableObject. Me preguntaba si a menudo se usan clases abstractas "vacías" o simplemente clases vacías ... Me doy cuenta de que de la manera que estoy haciendo esto, solo estoy creando la clase NonMovableObject solo por el bien de la categorización.
Sé que estoy pensando demasiado para hacer un clon de ruptura, pero mi enfoque está menos en el juego y más en usar la herencia y diseñar algún tipo de marco de juego.
MovableObject
tampocoNonMovableObject
pueden heredar el uno del otro, los dos tienen una ubicación; como tal, ambos deben ser consumibles por código que, por ejemplo, quiere dirigir la puntería de un monstruo hacia un objeto sin tener en cuenta si ese objeto podría moverse o no.