我试图在另一个类的方法中更改一个类对象的变量:
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
我知道它应该由指针完成,但我无法正确使用它。
答案 0 :(得分:4)
board::drawCard(deck &d)
所有重要的&符号。你需要参考牌组,而不是它的副本。