在Dealer类中,我将Player声明为朋友类。请注意,deck是经销商会员,我有以下经销商职能:
deque<pair<int, string>> Dealer::deal(int numOfCards){
deque<pair<int, string>> dealtCards;
for (int i = 1; i <= numOfCards; i++)
{
dealtCards.push_back(deck.front());
deck.pop_front(); // once a card is dealt, delete it from the deck
}
return(dealtCards);
}
当我直接调用此函数时,例如在main()中,适当更新卡片组(删除前卡片)。但是,当我从Player类调用此函数时,Dealer deck成员不会更新。例如,我希望此功能更新经销商套牌,但它不是:
Player::Player(Dealer dealer, int numOfCards){// deal numOfCards to player
holeCards = dealer.deal(numOfCards);
}
我不知道区别的是什么。玩家 可以访问经销商的私人会员卡,因为我可以看到洞卡正确更新。但由于某种原因,这个构造函数只是没有执行交易函数的pop_front()部分。我究竟做错了什么?谢谢!
答案 0 :(得分:2)
更改
Player::Player(Dealer dealer, int numOfCards)
到
Player::Player(Dealer &dealer, int numOfCards)
如果您想了解更多,请查看swap by reference示例。