'Input' 没有命名类型错误。想不通为什么?

'Input' does not name a type error. Can't figure out why?

编译时出现错误:'Input' does not name a type on line 17

#ifndef GAME_H
#define GAME_H

#include "input.h"

// Can forward declare "class Input(GLFWwindow*);" here but it still
//     gives the same error.

class Game
{
    public:
        Game(Input* input);
        ~Game();

        void Input();
        void Update();
        void Render();

    private:
        Input* mpInput; //error here.
};

#endif // GAME_H

Input.h 看起来像这样。

#ifndef INPUT_H
#define INPUT_H

#include <GLFW/glfw3.h>
#include <vector>

class Input
{
    public:
        Input(GLFWwindow* window);
        ~Input();
        bool GetKey(int keyCode);
        bool GetKeyDown(int keyCode);
        bool GetKeyUp(int keyCode);
        void Update();

    private:
        GLFWwindow* mpWindow;
        std::vector<bool> mCurrentKeys;
        std::vector<bool> mDownKeys;
        std::vector<bool> mUpKeys;
        const int NUM_KEYCODES = 256;
};

#endif // INPUT_H

我不知道这里发生了什么。我昨天遇到了类似的问题,想不通,所以我尝试保存项目,关闭Code::Blocks,重新启动Code::Blocks,然后重新打开项目。然后我编译了它并且它没有明显的原因工作。没有更改代码或任何内容。我也尝试在这里重新加载项目,但它仍然给出相同的错误。

您的 class 代码中有方法 Input。混合方法和类型的名称通常不是一个好主意。在您的 class Game 方法之一中考虑此代码:

Input();

这是方法 Input 调用还是您正在尝试创建 Input class 实例?尝试重命名您的 Input 方法。