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可能不是静态字段。

您可能将 GameLoop 设为静态以在整个代码中保持 GameApp 的单个实例可用。要正确地做到这一点,请阅读单例模式,因为它可能是您正在寻找的。

于 2013-05-29T20:27:29.177 回答