È male progettare avere 2 classi che hanno bisogno l'una dell'altra?
È un po 'un odore di codice , ma si può partire con esso. Se questo è il modo più semplice e veloce per avviare il gioco, provalo. Ma tienilo a mente perché ci sono buone possibilità che a un certo punto dovrai rifattorizzarlo.
La cosa con C ++ è che le dipendenze circolari non si compileranno così facilmente , quindi potrebbe essere una buona idea sbarazzarsene invece di perdere tempo a sistemare la compilazione.
Vedi questa domanda su SO per qualche altra opinione.
Definiresti [il mio design] cattivo design?
No, è ancora meglio che mettere tutto in una classe.
Non è così eccezionale, ma in realtà è abbastanza vicino alla maggior parte delle implementazioni che ho visto. Di solito, avresti una classe manager per gli stati di gioco ( attenzione! ) E una classe renderer, ed è abbastanza comune che siano singoli. Quindi la dipendenza circolare è "nascosta", ma potenzialmente è lì.
Inoltre, come ti è stato detto nei commenti, è un po 'strano che le classi di stato del gioco eseguano una sorta di rendering. Dovrebbero semplicemente contenere informazioni sullo stato e il rendering dovrebbe essere gestito da un renderer o da alcuni componenti grafici degli oggetti di gioco stessi.
Ora potrebbe esserci il massimo del design. Sono curioso di vedere se altre risposte portano una bella idea. Tuttavia, sei probabilmente quello che può trovare il miglior design per il tuo gioco.