我正在用C ++制作引擎。没什么特别的,我是c ++的初学者,但我认为这是一个很有趣的项目,可以帮助我以后开始工作时学习所需的技能。我正在制作一个接受用户输入的函数,当按下该特定键时,它可以统一执行您想要的代码,例如Input.GetKeyDown。我有一个问题,那就是我试图给出一个包含所有键的键代码作为参数的枚举,但是它给出了一个错误,我无法在任何地方找到有效的解决方案。 这是我的代码:
Functions.cpp
enum keyinputlist
{
a = 97, b = 98, c = 99, d = 100, e = 101,
f = 102, g = 103, h = 104, i = 105, j = 106, k = 107,
l = 108, m = 109, n = 110, o = 111, p = 112, q = 113,
r = 114, s = 115, t = 116, u = 117, v = 118,
w = 119, x = 120, y = 121, z = 122
};
bool Functions::test(keyinputlist List)
{
bool Success = CheckInput(List);
return Success;
}
Functions.h
class Functions
{
public:
Functions();
~Functions();
//Other public functions
bool test(keyinputlist List);
};
Main.cpp
int main()
{
Functions function;
if (function.test(a) != 0)
{
std::cout << "It worked!" << std::endl;
sleep_for(1.5s);
}
}
ErrorList:
E0020: identifier "a" is not found
E0020: identifier "keyinputlist" is not found
答案 0 :(得分:4)
有人在评论中回答了这个问题。您的问题很简单,enum
的定义需要放在Functions.h
中。您需要在Functions.h
和Main.cpp
中都包含Functions.cpp
。虽然因为您收到的错误比目前还多,但我猜您已经这样做了。
通常,仅用于非模板功能的代码应放在.cpp
文件中。类型声明和其他类似内容可能应该存在于.h
文件中。
您遇到的问题是,由于您的enum
在.cpp
文件中,而没有包含在Main.cpp
中,因此Main.cpp
中的代码不知道您在做什么。在谈论您提到枚举类型或任何枚举值时。它没有看到任何东西,所以它不认为它存在。
通常,您在此处声明的enum
似乎是个坏主意。 'a'
在几乎所有支持C ++的平台(IBM大型机除外)上已经是97。用枚举定义字符编码将使您以后编写很多额外的代码,因为这很麻烦。
答案 1 :(得分:0)
我有答案/问题。 我输入而不是“类名” :: a;这给了我错误,我将枚举放在头文件中,现在可以正常工作。