Rozbieżność wyników gettera

0

O co chodzi w ogóle.. nie mogę się z tym uporać. Proszę o pomoc.

Dlaczego jeśli funkcja jest wywoływana wewnątrz innej funkcji (składowej innej klasy) to działa a jeśli w mainie to nie?

więc mamy klasę dice: najzwyklejszą na świecie.

#ifndef DICE_H
#define DICE_H
////// plik: dice.h
class dice {
private:
        int num;
public:
       void roll();
       int getNum();
       void setNum(int n);
}; 
#endif

teraz .cpp

#include "dice.h"
///////plik dice.cpp
void dice::roll()
       {  num = rand() % 6 + 1; }
int dice::getNum()
{ return num; }
void dice::setNum(int n)
{ num = n; }

Mamy naszą funkcję składową klasy player:

void player::move(dice d1, dice d2, game game_var, int max_players)
{
    d1.roll(); d2.roll();
    cout << "[ " << d1.getNum() << ", " << d2.getNum() << "]";
    cout << "[ " << d1.getNum() << ", " << d2.getNum() << "]"; //wrzuciłem drugi raz żeby sprawdzić czy nie uszkadza wywołanie
    setPosition( d1.getNum() + d2.getNum() + getPosition() );
    cout << "\nPlayer moved.\nCurrent position: " << getPosition();
    if ( d1.getNum() == d2.getNum() )
    { cout << "\nRolled double. Player will have another roll."; }
}

i ostatni czyli nasz main:

    p[ world.getQueue() ].move(d1, d2, world, players); // czyli player.move(dice, dice, nieistotne, int)
    cout << "[ " << d1.getNum() << ", " << d2.getNum() << "]";

A teraz co mi wyskakuje w konsoli:

[ 3, 3][ 3, 3][ 2686832, 0]

Ręce rozkładam <rozkładam ręce> czy ma ktoś jakiś pomysł?

Pozdrawiam,
Unico

0

Ah.. dice.roll() jest wywoływany lokalnie w funkcji. Tak?

2

tak

przekaz referencje lub wskaznik

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