ちょっと質問があります。

class MAIN{//メインウインドウのプロシジャふくむ。

}
このようにゲームのメインを担当するクラスがあります。
このなかにはSystemManagerやらGraphicsManagerやらゲームに関するいろいろなクラスがあるのですが、
たとえばSpriteManagerというゲェム中にでてくるキャラクタを管理するクラスがあったとします。
そしてその中にはSpriteクラスをvectorで保持しているメンバがあります。
SpriteクラスにはDrawという自身を描画するメンバ関数があります。
このSpriteのDrawメソッドはSpriteManagerにあるDrawメソッドからvectorのsize()によってforループで順に呼び出されます。
そして、Drawの引数にはGraphicsManagerへのポインタが必要です。
このGraphicsManagerなんですが・・・

GraphicsManager g

void foo(){
SpriteManager->Draw(g)
}

SpriteManager::Draw(GraphicsManager* g){                    ↓

for(int i=0;i<v.size();i++)
{
Sprite[i]->Draw(GraphicsManager)
}
}

のように2回引数として渡されるのですが、これがベストな方法なのでしょうか。速度に影響はありませんか?
GraphicsManager以外にも、SystemManagerのメンバ関数が必要だったりします。
もっとスマートな方法があったら教えてください。