我正在用 C++ 制作一个引擎。它没什么特别的,我是 c++ 的初学者,但我认为这将是一个有趣的项目,可以在我开始工作时学习我需要的技能。我正在制作一个接受用户输入的函数,当按下该特定键时,它可以统一执行您想要的代码,如 Input.GetKeyDown。我有一个问题,那就是我试图给出一个枚举,其中包含键的所有键码作为参数,但它给出了一个错误,我无法在任何地方找到有效的解决方案。 这是我的代码:
函数.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;
}
函数.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);
}
}
错误列表:
E0020: identifier "a" is not found
E0020: identifier "keyinputlist" is not found
最佳答案
有人在评论中回答了这个问题。您的问题很简单,enum
定义需要放在 Functions.h
中。您需要在 Main.cpp
和 Functions.cpp
中包含 Functions.h
。虽然因为你没有得到比现在更多的错误,我猜你已经这样做了。
一般来说,.cpp
文件中只应包含非模板函数的代码。类型声明和其他类似的东西可能应该存在于 .h
文件中。
您遇到的问题是因为您的enum
位于.cpp
文件中并且未包含在Main.cpp
中,代码在 Main.cpp
中,当您提到枚举类型或任何枚举值时,不知道您在说什么。它没有看到任何这些东西,所以它认为它不存在。
一般来说,您在那里声明的enum
似乎不是个好主意。 'a'
在几乎所有支持 C++ 的平台(不包括 IBM 大型机)上都已经是 97。使用枚举定义字符编码会导致您稍后编写大量额外代码,因为它很麻烦。
关于c++枚举作为函数中的参数并在另一个文件中调用该函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51005840/