Как правильно использовать объекты класса - PullRequest
1 голос
/ 13 апреля 2019

Я не могу сравнить (list [0] .getOwned () == false) Я также не могу изменить данные с помощью (list [0] .setOwned (true);)

#include <iostream>
#include <iomanip>
#include <string>
#include <stdlib.h>
using namespace std;


class Weapon
{
private:
    bool owned; // bool for item owned
    string item; // string for Item 1
    string sound; // string for Sound

public:
    Weapon(bool O, string I, string S)
    {
        bool owned = O;
        string item = I; 
        string  sound = S;
    }
    Weapon()
    {
        bool owned = false;
        string item = "no name";
        string sound = "no name";

    }
    void setOwned(bool O)
    {
        owned = O;
    }

    void setItem(string I)
    {
        item = I;
    }

    void setSound(string S)
    {
        sound = S;
    }

    bool getOwned()
    {
        return owned;
    }

    string getItem()
    {
        return item;
    }

    string getSound()
    {
        return sound;
    }

};

int main()
{
    const int NUM_WEAPONS = 5;
    Weapon list[NUM_WEAPONS];
    list[0] = Weapon(false,"Sword", "Shing");
    list[1] = Weapon(false, "Axe", "Fwump");
    list[2] = Weapon(false, "Dagger", "Tsk");
    list[3] = Weapon(false, "Tiger Mount", "Roar");
    list[4] = Weapon(false, "Shield", "Thud");

  if (list[0].getOwned() == false)
{
   cout << "You've purchased a Sword" << endl;
   list[0].setOwned(true);
    cash = cash - p1;

}
else if (list[0].getOwned() == true)
{
    cout << "You already own this weapon" << endl;
}

}

Я ожидаю, что список [0] .getOwned () == false будет сравниваться и проходить через оператор if, чтобы затем установить его в значение true, чтобы вы не могли «купить его снова». он ничего не делает, я неправильно использую объекты класса или я что-то упускаю совсем.

1 Ответ

0 голосов
/ 13 апреля 2019

Weapon конструктор объявляет и инициализирует локальную переменную с именем owned.Он не инициализирует переменную-член this->owned.Затем ваша программа демонстрирует неопределенное поведение при доступе к неинициализированному объекту.

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