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

Error C2228, though left of .x has a class

本文关键字:有一个 左边 C2228 错误      更新时间:2023-10-16

我试图调用类函数,而Visual Studio抛出上述错误给我。我一直在构造函数中调用另一个函数,它在那里工作。

值得一提的是,gamelloop是静态的。我有一种奇怪的感觉,这可能是原因。如果是,我怎么让它工作?

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 

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

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

相关文章: