'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
方法。
编译时出现错误:'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
方法。