Передать вектор карты в функцию для печати и использования?

Я работаю с карточной программой и хочу передать свой вектор одной карты в свою функцию, чтобы его можно было использовать. Прямо сейчас, я просто хотел бы проверить, может ли он печатать карты из колоды, но передача его в руку игрока является конечной целью. Каков наилучший способ передать этот вектор для использования в функциях?

Заранее спасибо!!

функция для создания колоды:

void Deck::createDeck() {
deck.clear();
static const char suits[] = {'C','D','H','S'};
for (int suit=0; suit < 4; suit++)
for (int val=1; val <=13; val++)
deck.push_back(Card(val,suits[suit]));
}

функция для передачи карты:

void Card::printCard(Card& drawnCard) const { //for debugging purposes
cout << value << " of " << suit << endl;

}

прототипы были объявлены в заголовке следующим образом:

class Card{
public:
int value;
char suit;
string drawnCard;
Card(int value, char suit) : value(value), suit(suit) {}
void printCard(Card& drawnCard) const;
};

class Deck {

public:
void createDeck();
void shuffleDeck(Card);
Card drawRandomCard();
Deck();
vector<Card> deck;
};

Еще раз спасибо!

1

Решение

Здесь много критики. Вы, вероятно, не хотите передавать список карт напрямую, но, скорее всего, хотите передать колоду, например:

 void DoSomething(const Deck& deck) {
// ...
}

Однако, если вы передадите список, способ передать его будет как константная ссылка:

void DoSomething(const std::vector<Card>& cards) {
// ...
}

Однако есть много других областей, где ваш пример кода может быть улучшен. Например, поля данных Card и Deck, вероятно, должны быть «частными» и доступны только через соответствующие функции доступа. К тому же printCard не нужно брать карту в качестве входных данных, так как она работает на this (и, если он действительно принимает параметр, функция, которая просто печатает объект, должна получить его параметр с помощью const, а не изменяемой ссылки).

Увидеть этот смысл для примера.

0

Другие решения


По вопросам рекламы [email protected]