当包含标题时,为什么在代码中出现“使用未定义类型”错误?

瑞安

我正在学习C ++,并试图使用Direct3D编写一个简单的游戏。在我的游戏项目中,我在整个游戏中使用一个名为的命名空间GameEngine我的游戏逻辑包含在名为的主类中GameGame类将有东西,像输入管理器和对象管理器的成员变量。这些将是私有成员,但是我在Game上有一个公共函数,函数返回指向InputManager该类的指针这样,我可以告诉该程序在程序的InputManagerPeekMessage循环内处理窗口消息

这是我的主要消息循环...

// 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不过,致电时出现错误它说我正在使用一个未定义的类型InputManagerGetInputManager函数返回一个指向的指针InputManagerMain.cpp此主消息循环所在的文件的顶部,我包含包含的定义的标头InputManager,即InputManager.h因此,我不太确定为什么会说这是一个未定义的类型。

有人知道这个错误在发生什么吗?我试图在其中一些头文件中第一次使用前向声明,并且我想可能与这些声明有关吗?

我将整个文件按文件组织了粘贴在Github上:https : //gist.github.com/ryancole/5936795#file-main-cpp-L27

文件已正确命名,并且错误行在粘贴底部附近突出显示。

某物

Game.hforwardclass InputManager 在全局名称空间中声明a ,但实际InputManager类在名称空间中GameEngine

由于这两个声明位于不同的命名空间中,因此它们彼此独立,并且InputManger全局命名空间中in仍然是不完整的类型。要解决此问题,请将前向声明移到名称空间中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我的作业代码中出现“未定义”错误?

我不明白为什么我的代码中出现这个未定义的错误

为什么在Laravel中出现未定义的常量错误?

当我认为它已定义时,在我的 JavaScript 代码中出现“未定义”错误

为什么我的代码中出现“未定义的局部变量或方法”?

为什么在控制台中出现“未定义”?

一起使用ngIf和ViewChild时为什么会出现未定义的错误

为什么在使用Formlet时出现提升/5.1未定义错误?

为什么在使用.winfo_exists(tkinter)时出现未定义错误

为什么在Laravel中出现“未定义的变量:var”错误?

为什么在Ruby on Rails应用程序中出现未定义的方法错误?

为什么在Ruby on Rails中出现nil:NilClass的错误“未定义方法'each'”?

使用带标签的中断时,java 中出现“未定义标签”错误

为什么在此代码中出现错误“非法偏移类型”?

当添加不相关的定义时,为什么在此程序中出现类型错误?

为什么我出现“未定义”错误,但代码在我的Meteor模板中正常工作?

为什么我的php代码出现未定义索引错误?

在将变量与未定义进行比较时,为什么会出现“变量未定义”错误?

包含 <iostream> 时出现“未定义引用”错误

为什么在Rails模型回调中出现此“未定义方法”错误,将该方法作为符号传递?

类型错误:无法读取未定义的属性“then”——使用 then 时出现此错误

当我尝试从 Controller 读取会话属性时,为什么会出现“未定义”错误

为什么当 var_dump($_POST) 显示数组时出现未定义索引错误?

为什么在调用不带参数的函数时出现未定义的错误?

为什么在Racket Dr中引用“内置”函数时出现未定义的错误?

为什么符号存在时出现“符号查找错误”、“未定义符号”

为什么在使用“ using namespace std;”时在此代码中出现错误?和“ bits / stdc ++。h”?

为什么会出现“构造函数未定义”错误?

为什么会出现“未定义索引”错误?