我正在尝试创建一个将牌发给两只手的功能,直到牌组完全清空。
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;
}
}
我一直无法在网上找到可用的解决方案,尽管这似乎是一个常见问题。我也不认为这是我的语法问题。如果有人可以提供帮助,将不胜感激。提前致谢。