[英]Error C2228, though left of .x has a class
我試圖調用類函數,而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
如果GameLoop
是static
,那意味着它只能訪問static
字段。 d3d
可能不是靜態字段。
您可能使GameLoop靜態,以便在整個代碼中保持GameApp的單個實例。 要做到這一點,請閱讀單身模式,因為它可能正是您所尋找的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.