0

クラス関数を呼び出そうとしていますが、Visual Studio は上記のエラーをスローします。コンストラクターで別の関数を呼び出していて、そこで動作します。

言及する価値があるのは、GameLoop が静的であることです。これが原因かも?という不思議な感覚です。もしそうなら、どうすればそれを機能させることができますか?

GameApp::GameApp()
{
    winApi.CreateBasicWindow("---===| Test |===---", 1024, 768, WS_OVERLAPPEDWINDOW);

    bool err = d3d.BasicInit(winApi.GetWindowHandle(),
                             winApi.GetInstance(),
                             1024,
                             768,
                             60,
                             1,
                             true);

    if(!err)
        MessageBox(0, "Could not initialize DirectX 10.", "Error!", MB_OK | MB_ICONERROR);

    winApi.RunMessageLoop(GameLoop);
}

void GameApp::GameLoop()
{
    D3DXCOLOR color(1.0f, 0.0f, 0.0f, 1.0f);
    d3d.Redraw(color); // Error here
}

- - 編集

エラーメッセージ

Error   1   error C2228: left of '.Redraw' must have class/struct/union 
4

1 に答える 1

2

の場合GameLoopstatic、フィールドにのみアクセスできることを意味しstaticます。d3dおそらく静的フィールドではありません。

コード全体で GameApp の単一のインスタンスを利用できるようにするために、おそらく GameLoop を静的にしました。それを適切に行うには、シングルトンパターンを読んでください。おそらくそれがあなたが探しているものだからです。

于 2013-05-29T20:27:29.177 に答える