Передача перечислений в объекты в разных файлах - PullRequest
0 голосов
/ 21 сентября 2018

Итак, я сейчас работаю над текстовой RPG и столкнулся со странной проблемой.Работая над кодированием оружия, я решил использовать перечисления для типа и редкости оружия.Я уже запрограммировал все для моего Weapon класса;тем не менее, когда я пытаюсь создать объект Weapon, я получаю сообщение об ошибке, касающееся моих перечислений - error: 'common' is not a type.Соответствующий код выглядит следующим образом:

В Enum_Weapon.h:

#ifndef ENUM_WEAPON_H_INCLUDED
#define ENUM_WEAPON_H_INCLUDED

enum rarity{common, uncommon, rare, epic, legendary};

enum weaponType{axe, bow, crossbow, dagger, gun, mace,
                polearm, stave, sword, wand, thrown};


#endif // ENUM_WEAPON_H_INCLUDED

И в Weapon.h:

#ifndef WEAPON_H
#define WEAPON_H

#include "Item.h"
#include "Enum_Weapon.h"

class Weapon : public Item{
    public:
        Weapon();
        Weapon(rarity r, weaponType t, std::string nam, int minDam, 
               int maxDam, int stamina = 0, int strength = 0, 
               int agility = 0, int intellect = 0);

Код, конечно, продолжается;но это весь код, который имеет отношение к моей ошибке.Наконец, когда я пытаюсь создать объект Weapon, я получаю сообщение об ошибке:

#ifndef LISTOFWEAPONS_H
#define LISTOFWEAPONS_H

#include "Weapon.h"
#include "Enum_Weapon.h"

class ListOfWeapons
{
    public:
        ListOfWeapons();

    protected:

    private:
        Weapon worn_greatsword(common, sword, "Worn Greatsword", 1, 2);

};

#endif // LISTOFWEAPONS_H

Та же ошибка также происходит с перечислением sword.Я исследовал проблему, но не могу найти ничего похожего на проблему, которая у меня возникла.Любая помощь очень ценится!

1 Ответ

0 голосов
/ 21 сентября 2018

Ваш атрибут оружия был объявлением функции, а не определением переменной.Вы должны передать значения по умолчанию в конструкторе.

class ListOfWeapons
{
    public:
    ListOfWeapons() :
           worn_greatsword(common, sword, "Worn Greatsword", 1, 2)
      {
         //...constructor stuff
      }

protected:

private:
    //function decl
    //Weapon worn_greatsword(common, sword, "Worn Greatsword", 1, 2);
     Weapon worn_greatsword;
};
...