gpt4 book ai didi

c++ - friend 可以访问 friend 的成员(member),但似乎无法更新 friend 的成员(member)

转载 作者:行者123 更新时间:2023-11-28 02:51:08 24 4
gpt4 key购买 nike

在 Dealer 类中,我将 Player 声明为 friend 类。注意 deck 是 Dealer 成员,我有如下 Dealer 函数:

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 牌组成员不会更新。例如,我希望这个函数可以更新 Dealer deck,但它不是:

Player::Player(Dealer dealer, int numOfCards){// deal numOfCards to player
holeCards = dealer.deal(numOfCards);
}

我看不出有什么区别。玩家确实可以访问 Dealer 的私有(private)成员牌组,因为我可以看到 holeCards 已正确更新。但出于某种原因,这个构造函数只是没有执行 deal 函数的 pop_front() 部分。我究竟做错了什么?谢谢!

最佳答案

改变

Player::Player(Dealer dealer, int numOfCards)

Player::Player(Dealer &dealer, int numOfCards)

如果您想了解更多信息,请查看swap by reference示例。

关于c++ - friend 可以访问 friend 的成员(member),但似乎无法更新 friend 的成员(member),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23028631/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com