Ist es schlecht, zwei Klassen zu haben, die sich gegenseitig brauchen?
Es ist ein bisschen ein Code-Geruch , aber man kann damit gehen. Wenn dies der einfachere und schnellere Weg ist, um Ihr Spiel zum Laufen zu bringen, dann versuchen Sie es. Aber denken Sie daran, denn es besteht eine gute Chance, dass Sie es irgendwann überarbeiten müssen.
Die Sache mit C ++ ist, dass zirkuläre Abhängigkeiten nicht so einfach kompiliert werden können . Daher ist es möglicherweise eine bessere Idee, sie loszuwerden, als Zeit mit der Korrektur Ihrer Kompilierung zu verbringen.
Siehe diese Frage auf SO für ein paar weitere Meinungen.
Würden Sie [mein Design] schlechtes Design nennen?
Nein, es ist immer noch besser, als alles in eine Klasse zu bringen.
Es ist nicht so toll, aber es kommt den meisten Implementierungen, die ich gesehen habe, ziemlich nahe. Normalerweise haben Sie eine Manager-Klasse für Spielzustände ( Vorsicht! ) Und eine Renderer-Klasse, und es ist durchaus üblich, dass es sich um Singletons handelt. Die zirkuläre Abhängigkeit ist also "verborgen", aber möglicherweise vorhanden.
Wie Sie in den Kommentaren erfahren haben, ist es etwas seltsam, dass Klassen mit Spielstatus eine Art Rendering ausführen. Sie sollten nur Statusinformationen enthalten, und das Rendern sollte von einem Renderer oder einer grafischen Komponente von Spielobjekten selbst durchgeführt werden.
Jetzt könnte es das ultimative Design geben. Ich bin gespannt, ob andere Antworten eine gute Idee bringen. Trotzdem sind Sie wahrscheinlich derjenige, der das beste Design für Ihr Spiel findet.