簡體   English   中英

錯誤C2228,雖然.x的左邊有一個類

[英]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 

如果GameLoopstatic ,那意味着它只能訪問static字段。 d3d可能不是靜態字段。

您可能使GameLoop靜態,以便在整個代碼中保持GameApp的單個實例。 要做到這一點,請閱讀單身模式,因為它可能正是您所尋找的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM