'输入'没有命名类型错误。无法弄清楚原因?

时间:2015-07-11 05:05:06

标签: c++ gcc compiler-errors codeblocks

当我编译时,我收到错误:'输入'没有在第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,然后重新打开项目。然后我编译了它,它没有明显的原因。没有代码被更改或任何东西。我也尝试在这里重新加载项目,但它仍然会出现同样的错误。

1 个答案:

答案 0 :(得分:0)

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

Input();

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