c ++枚举作为函数中的参数,并在另一个文件中调用该函数

时间:2018-06-23 23:32:31

标签: c++ function parameters enums

我正在用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

2 个答案:

答案 0 :(得分:4)

有人在评论中回答了这个问题。您的问题很简单,enum的定义需要放在Functions.h中。您需要在Functions.hMain.cpp中都包含Functions.cpp。虽然因为您收到的错误比目前还多,但我猜您已经这样做了。

通常,仅用于非模板功能的代码应放在.cpp文件中。类型声明和其他类似内容可能应该存在于.h文件中。

您遇到的问题是,由于您的enum.cpp文件中,而没有包含在Main.cpp中,因此Main.cpp中的代码不知道您在做什么。在谈论您提到枚举类型或任何枚举值时。它没有看到任何东西,所以它不认为它存在。

通常,您在此处声明的enum似乎是个坏主意。 'a'在几乎所有支持C ++的平台(IBM大型机除外)上已经是97。用枚举定义字符编码将使您以后编写很多额外的代码,因为这很麻烦。

答案 1 :(得分:0)

我有答案/问题。 我输入而不是“类名” :: a;这给了我错误,我将枚举放在头文件中,现在可以正常工作。