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