我正在尝试调用类函数,而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
答案 0 :(得分:2)
如果GameLoop
为static
,则表示它只能访问static
个字段。 d3d
可能不是静态字段。
你可能使GameLoop静态,以便在整个代码中保持一个GameApp实例。要做到这一点,请阅读单身模式,因为它可能正是您所寻找的。 p>