在另一个类的方法中更改一个类对象的变量的值。 (扑克游戏)

时间:2016-10-19 11:58:51

标签: c++

我试图在另一个类的方法中更改一个类对象的变量:

class deck
{
    public:
    shuffleDeck();
    card pickCard();
    int topCard = 0;
    //protected:
};
card deck::pickCard()
{
        topCard++;
        return karta[topCard];
}

class board
{
    public:
    card karta[5] = {{0,0},{0,0},{0,0},{0,0},{0,0}};
    int jackpot = 0;
    int cardCount = 0;

    drawCard(deck);
};

board::drawCard(deck d)
{
    karta[cardCount] = d.pickCard();
    cardCount++;
}

deck d;
board b;
//
d.shuffleDeck();
b.drawCard(d);
b.drawCard(d);
b.drawCard(d);
b.drawCard(d);
showCard(b.karta[0]); //karta - card in polish
showCard(b.karta[1]);
showCard(b.karta[2]);
showCard(b.karta[3]);
cout<<"\n"<<b.cardCount;
cout<<"\n"<<d.topCard;

这些是我的控制台Texas Hold'em Poker代码的一部分。这是运行程序的结果:

8Karo 8Karo 8Karo 8Karo // 8Diamonds ...
4
0
Process returned 0 [...].

它显然不会更新topCard值,因此我会在主板上每张卡的插槽上获得相同的卡。我希望我的程序调用{​​{1}}函数,然后再拨打board::drawCard

我知道它应该由指针完成,但我无法正确使用它。

1 个答案:

答案 0 :(得分:4)

  board::drawCard(deck &d)

所有重要的&符号。你需要参考牌组,而不是它的副本。