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

标签 c++ function parameters enums

我正在用 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.cppFunctions.cpp 中包含 Functions.h。虽然因为你没有得到比现在更多的错误,我猜你已经这样做了。

一般来说,.cpp 文件中只应包含非模板函数的代码。类型声明和其他类似的东西可能应该存在于 .h 文件中。

您遇到的问题是因为您的enum 位于.cpp 文件中并且未包含在Main.cpp 中,代码在 Main.cpp 中,当您提到枚举类型或任何枚举值时,不知道您在说什么。它没有看到任何这些东西,所以它认为它不存在。

一般来说,您在那里声明的enum 似乎不是个好主意。 'a' 在几乎所有支持 C++ 的平台(不包括 IBM 大型机)上都已经是 97。使用枚举定义字符编码会导致您稍后编写大量额外代码,因为它很麻烦。

关于c++枚举作为函数中的参数并在另一个文件中调用该函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51005840/

相关文章:

c++ - 创建分类音乐库的有效方法

function - 如何在 Mongo 的 update() 函数中使用 $add?

c# - 方法签名中的 params 关键字的真正含义是什么

function - 检查函数的参数是否为函数

haskell - 在 Haskell 中,当你只传递一个列表时,map 函数是什么意思?

c++ - 以编程方式连接到无线网络

C++ 删除字符串中多余的空格或制表符

c++ - 用整数划分数组项?

javascript - 对所有选定的复选框使用函数

C - 通过引用和值将结构参数传递给函数