为什么这个函数给我错误“x”不是“y”的成员? [关闭]

问题描述 投票:0回答:0

我正在尝试创建一个将牌发给两只手的功能,直到牌组完全清空。

while (!gameDeck.empty()) {
        Player1.pushback(gameDeck.deal_a_card());
        Player2.pushback(gameDeck.deal_a_card());
    }

但是,编译器随代码 C2039 一起吐出这三个错误:

"'pushback': is not a member of 'Player'"
"'pushback': is not a member of 'Player'"
"'empty': is not a member of 'Deck'"

'Player'的成员函数是:

#include <vector>
#include <list>
#include "Player.h"
#include "card.h"

Player::Player()
{
    numCards = 0;
    cards.clear();
}

Player::Player(vector<Card> ini_cards)
{
    numCards = ini_cards.size();
    for (int i = 0; i < numCards; i++) {
        cards.push_back(ini_cards[i]);
    }
}

int Player::getNumCards() const
{
    
        return numCards;
    
}

Card Player::play_a_card()
{
    if (cards.empty()) {
        return Card('I', 0);
    }
    Card CardsPlayed = cards.front();
    cards.pop_front();
    numCards--;
    return CardsPlayed;
}

void Player::addCards(vector<Card> winningCards)
{
    for (int i = 0; i < winningCards.size(); i++) {
        cards.push_back(winningCards[i]);
    }
    numCards = numCards + winningCards.size();
}

vector<Card> Player::dropCards()
{
    
    vector<Card> dropCards;
    for (int i = 0; i < 3 && !cards.empty(); i++) {
        
        Card CardDropped = cards.front();
        cards.pop_front();
        numCards--;
        dropCards.push_back(CardDropped);
    }
    return dropCards;
}
    

void Player::print() const{
    int i = 0;
    for (auto it = cards.begin(); it != cards.end(); it++) {
        it->print();
        cout << "    ";
        i++;
        if (i % 8 == 0) {
            cout << endl;
            }
    }
    cout << endl;
}

'Deck'的成员函数是:

#include <cstdlib>
#include <ctime>
#include <algorithm>
#include <vector>
#include "deck.h"

 // create a standard 52-card deck
void Deck::createDeck()
{
    deck.clear();
    for (int val = CARD_START; val < CARD_START + POINTS; val++)
    {
        // create each point value for each of FOUR suits, total cards = 13 * 4 = 52 
        Card newSpadeCard('S', val);
        Card newClubCard('C', val);
        Card newHeartCard('H', val);
        Card newDiamondCard('D', val);
        deck.push_back(newSpadeCard);
        deck.push_back(newClubCard);
        deck.push_back(newHeartCard);
        deck.push_back(newDiamondCard);
    }
}

// shuffle the cards in 52-card deck
void Deck::shuffleDeck()
{
    srand(time(0));
    random_shuffle(deck.begin(), deck.end());
}

// return a card from the tail of the deck
Card Deck::deal_a_card()
{
    if (deck.size() == 0)
    {
        cout << "The deck is empty now!" << endl;
        Card invalidCard;
        return invalidCard;
    }
    else
    {
        Card result = deck.back();
        deck.pop_back();
        return result;
    }
}

我一直无法在网上找到可用的解决方案,尽管这似乎是一个常见问题。我也不认为这是我的语法问题。如果有人可以提供帮助,将不胜感激。提前致谢。

c++ vector push-back
© www.soinside.com 2019 - 2024. All rights reserved.