Wątek przeniesiony 2014-02-27 12:18 z C/C++ przez ŁF.

Obiekt nie chce zmienić zmiennej :(

0

Próbuję poprzez funkcje obiektu player zmodyfikować zmienne obiektu street wszystko jest strasznie szalone, bo jakoś nie reaguje. Zmienna obiektu street nie reaguje.

class street {
public:
        string name;
        int position;
        int type;
        int owner; // zwróćcie uwagę na to że owner jest na publicu
        int price;
        int rent[6];
        int state; 
        int houses;
public:     
        void strPosition(string n);
        void strType(string n);
        void strOwner(string n);
        void strPrice(string n);
        void strRent(int n, string m);
        void card();
//        void check();
        
};

//\to jest klasa którą chce modyfikować, wszystko jest publiczne.//\

funkcja obiektu player//

void player::buyStreet(street a1)
{
     if (a1.price > money)
     { cout << "\nNot enough money! Sorry :( "; }
     else
     {
         money -= a1.price;
         a1.owner = 1;  // specjalnie dla testu po prostu 1
         a1.state = 1;
         cout << "Bought." << a1.name;  // specjalnie ma dorzucac imie   
     }
}

a teraz jak wygląda main. w uproszczeniu:

player p[3];
street s[40];
// tutaj wszystkie dane sa wczytywane (ladnie zreszta) p[0] jest nieuzywany
s[ p[qu].getPosition() ].card(); // funkcja street.card() to rozbudowany cout wyrzuca wszystkie zmienne w ladnym formacie
 p[ qu ].buyStreet( s[ p[ qu ].getPosition()] ); 
================================
Hello in Monopoly!
====================

Turn: 1 Turn of player: 1       Player position: 0
Player money: 1200
[ 2, 4]
Player moved.
Current position: 6

===================================================
Name: Ulica Radzymińska
Position: 6
Owner: 0nobody!
Price: 100b
Bought.Ulica Radzymińska6



===================================================
Name: Ulica Radzymińska
Position: 6
Owner: 0nobody!
Price: 100

Pozdrawiam,
Unico

3

Przekazujesz do funkcji KOPIĘ obiektu. Jeśli chcesz pracować na oryginale to musisz użyć wskaźnika albo referencji. Ot taki urok C++ ;)

void player::buyStreet(street& a1)

1 użytkowników online, w tym zalogowanych: 0, gości: 1