перечисление c ++ в качестве параметра в функции и вызов функции в другом файле - PullRequest
0 голосов
/ 24 июня 2018

Я делаю движок на С ++. В этом нет ничего особенного, и я новичок в 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 голосов
/ 24 июня 2018

Я нашел ответ / проблему.Я вставляю вместо "имя класса" :: a;это дало мне ошибку, и я поместил enum в заголовочный файл, и теперь он работает.

0 голосов
/ 24 июня 2018

Кто-то ответил на это в комментарии.Ваша проблема проста, определение enum должно входить в Functions.h.Вы должны включить Functions.h в Main.cpp и Functions.cpp.Хотя из-за того, что вы не получаете намного больше ошибок, чем в настоящее время, я предполагаю, что вы уже это делаете.

В общем случае в файл .cpp должен входить только код для не шаблонных функций.Объявления типов и другие подобные вещи, вероятно, должны находиться в файле .h.

Проблема, с которой вы сталкиваетесь, заключается в том, что, поскольку ваш enum находится в файле .cpp и не включен в Main.cpp,Код в Main.cpp понятия не имеет, о чем вы говорите, когда упоминаете тип enum или любые значения enum.Он не видел ничего подобного, поэтому не думает, что он существует.

В общем, enum, который вы объявили там, кажется плохой идеей.'a' уже 97 на почти всех платформах, поддерживающих C ++ (кроме мэйнфреймов IBM).Определение кодировки символов с помощью enum приведет к тому, что вы напишете много дополнительного кода позже, потому что это громоздко.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...