错误C2228,虽然.x的左边有一个类

时间:2013-05-29 20:24:12

标签: c++ direct3d

我正在尝试调用类函数,而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 

1 个答案:

答案 0 :(得分:2)

如果GameLoopstatic,则表示它只能访问static个字段。 d3d可能不是静态字段。

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