我正在学习 C++,并正在尝试使用 Direct3D 编写一个简单的游戏。在我的游戏项目中,我在整个游戏中使用了一个命名空间,名为GameEngine
. 我的游戏逻辑包含在一个名为Game
. Game
该类将具有用于输入管理器和对象管理器之类的成员变量。这些将是私有成员,但我的Game
类上有一个公共函数,它返回指向InputManager
该类的指针。这样,我可以告诉我在程序的主循环中InputManager
处理窗口消息。PeekMessage
这是我的主要消息循环...
// instanciate the game
GameEngine::Game game(windowRectangle.bottom, windowRectangle.right);
// initialize D3D
game.InitializeDirect3D(hWnd);
game.InitializePipeline();
// main game loop
while (true)
{
// check for received event messages
if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
bool handled = false;
if (msg.message >= WM_MOUSEFIRST && msg.message <= WM_MOUSELAST)
{
handled = game.GetInputManager()->HandleMouseInput(&msg);
}
else if (msg.message >= WM_KEYFIRST && msg.message <= WM_KEYLAST)
{
handled = game.GetInputManager()->HandledKeyboardInput(&msg);
}
else if (msg.message == WM_QUIT)
{
break;
}
if (handled == false)
{
TranslateMessage(&msg);
DispatchMessageA(&msg);
}
}
// render the current frame
game.RenderFrame();
}
// tear down D3D
game.CleanDirect3D();
但是,当我调用 时GetInputManager
,我遇到了错误。它说我正在使用未定义的类型InputManager
。该GetInputManager
函数返回一个指向InputManager
. 在这个主消息循环所在的文件的顶部Main.cpp
,我包含了包含 的定义的标题,InputManager
即InputManager.h
. 所以,我不太清楚为什么它说这是一个未定义的类型。
有谁知道这个错误发生了什么?我第一次尝试在其中一些头文件中使用前向声明,我想这可能与这些有关?
我将按文件组织的整个代码粘贴在 Github 上:https ://gist.github.com/ryancole/5936795#file-main-cpp-L27
文件已正确命名,错误行在粘贴底部附近突出显示。