私が作成したゲームのクラスの設計に問題があります。
私のアプリには、次のものがあります。
CGame
画面の幅、画面の高さなど、ゲーム自体に関するすべての情報を含むクラスです。関数では、インスタンスmain()
へのポインターを作成します。CGame
CGUIObject
位置とメソッドを指定するフィールドを含む クラスでdraw()
、画面サイズに応じてオブジェクトを描画する方法を知っている必要があります。CGUIManager
シングルトンであり、のリストを含む クラスCGUIObject
。リスト内の各オブジェクトに対して、draw()
メソッドを呼び出すだけです。
わかりやすくするために、簡単なコードをいくつか入れます。
class CGame
{
int screenWidth;
int screenHeight;
};
class CGUIObject
{
CPoint position;
void draw(); // this one needs to know what is a screen's width and height
};
class CGUIManager // it's a singleton
{
vector<CGUIObject*> guiObjects;
void drawObjects();
};
そしてmain.cpp:
CGame* g;
int main()
{
g = new CGame();
while(1)
{
CGUIManager::Instance().drawObjects();
}
return 0;
}
問題は、それぞれCGUIObject
が によって保持されている画面サイズを知る必要があることですが、すべてのオブジェクトにインスタンスへのCGame
ポインターを含めるのは非常に愚かだと思います。CGame
誰か、これを達成するための最良のアプローチを教えてください。