Я работаю над системой массивов для работы в качестве инвентаря, мне нужен массив, чтобы иметь глобальную область видимости, чтобы ее можно было модифицировать по всей программе. Я его объявили ж/его переписчиков в файле заголовка, как так:Объявление глобальных перечисляемых массивов C++
#include "stdafx.h"
#include <iostream>
#ifndef ITEMSARRAY_H
#define ITEMSARRAY_H
using namespace std;
enum Weapons
{
LASER_RIFLE,
LASER_SWORD,
LASER_PISTOL,
PLASMA_LAUNCHER,
MAX_ITEMS
};
bool items[MAX_ITEMS];
items[LASER_RIFLE] = true;
items[LASER_SWORD] = false;
items[LASER_PISTOL] = false;
items[PLASMA_LAUNCHER] = true;
#endif
однако это бросает мне ошибку на нижних утверждений, потому что ее пытаются объявить его в качестве своего собственного массива или потому, что его пытается инициализировать значение к enum.I может поставить его в функцию и решить эту проблему следующим образом:
void defineItemArray(bool items[MAX_ITEMS])
{
items[LASER_RIFLE] = true;
items[LASER_SWORD] = false;
items[LASER_PISTOL] = false;
items[PLASMA_LAUNCHER] = true;
}
Проблема с этим состоит в том, что тогда, когда я пытаюсь использовать функцию элементы аргумент не тянет массив, как так :
#include "stdafx.h"
#include <iostream>
#include "itemsArray.h"
using namespace std;
void playerInventory()
{
defineItemArray(items);
for (int item = 0; item < MAX_ITEMS; ++item)
if (items[item] == true)
{
switch (item)
{
case 0:
cout << "Laser Rifle\n";
break;
case 1:
cout << "Laser Sword\n";
break;
case 2:
cout << "Laser Pistol\n";
break;
case 3:
cout << "Plasma Launcher \n";
break;
default:
cout << "Error";
break;
}
}
else
cout << "Not in Inventory\n";
}
void playerGet()
{
defineItemArray(items);
cout << "You have found a Laser Sword.\n";
cout << "Laser Sword added to inventory.\n";
items[LASER_SWORD] = true;
}
int main()
{
playerInventory();
playerGet();
playerInventory();
return 0;
}
позиция вызывает неопределенную ошибку, что делает функцию бесполезной. Я не уверен, что мне не хватает, но если я смогу пройти мимо этого roadblock, я наконец смогу закончить эту систему инвентаризации.
У вас есть следующая строка в двух разных местах: 'defineItemArray (item);' Я предполагаю, что это должно быть 'defineItemArray (items);' – CoryKramer
Это, но я изменил его, и он по-прежнему выдает неопределенную ошибку для элементов , на этот раз только для аргумента. –
Вы не можете выполнять задания в глобальной области. – NathanOliver