朋友可以访问朋友的会员,但似乎无法更新朋友的会员

时间:2014-04-12 09:31:44

标签: c++ constructor friend deque

在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()部分。我究竟做错了什么?谢谢!

1 个答案:

答案 0 :(得分:2)

更改

Player::Player(Dealer dealer, int numOfCards)

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

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