Блэкджек Создание динамической колоды C OOP

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

  1. Создайте колоду динамически

Этот вопрос основан на двух файлах (которые он провидел)

«Card.h»

//*********************************************************
//  CLASS DECLARATION
//*********************************************************
class Card
{
//*****************************************************
//  Public Members
//*****************************************************
public:
// Exception classes
class NotInitalized {};

// Enumeration for Suit
enum Suit { Clubs, Diamonds, Hearts, Spades,
UNKNOWN };

// Enumeration for Card Name
enum CardName { Ace, Two, Three, Four, Five, Six,
Seven, Eight, Nine, Ten, Jack,
Queen, King, UNKNOWN };

// constructors
//*****************************************************
// Card
//
// Create uninitialized card.  Must be initialized with
//  'setCard()' before use.
//*****************************************************
Card();    // card is not initialized
//*****************************************************
// Card
//
// Create a card based its ordinal position.
//     cards are ordered by suit first in the order
//     Clubs, Diamonds, Hearts and Spades, and within
//     the suit they are ordered Act thru King.
//******************************************************
Card(int); // number between 1-52

//******************************************************
// Card
//
// Create a card with the given name and suit.
//*******************************************************
Card(Suit, CardName);

// methods
//*******************************************************
// setCard
//
//  Set the Suit and Name of the card
//*******************************************************
void setCard(Suit, CardName);

//*******************************************************
// getSuit
//
//  returns the element of the Suit enumeration
// representing the suit of the card
//*******************************************************
int      getSuit();

//*******************************************************
// getCardName
//
//  returns the element of the CardName enumeration
//  representing the card
//*******************************************************
int    getCardName();

//*******************************************************
// getCardValue
//
//  returns face value of card.  For Ace -1 is the value.
//*******************************************************
int         getCardValue();

//*****************************************************
// toString
//
// return the string representation of the card.
//    e.g.,"Ace of Spades"//*****************************************************
string      toString();

//************************************************
//  Private Members
//************************************************
private:
// the Card’s suit (uses Suit enum)
Suit      suit = Suit::UNKNOWN;

// the Card’s name (uses CardName enum)
CardName  name = CardName::UNKNOWN;
};

Второй класс — это класс Deck. Этот класс представляет 52 карты в стандартной покерной колоде. Внутренне карты в колоде должны храниться в массиве объектов карт. Также должен быть параллельный массив указателей карт, в котором можно хранить порядок карт после каждого шаффла.

Когда создается колода, он создает 52 карты и перетасовывает их. Если в колоде заканчиваются карты до ее перетасовки, метод dealCard () должен вызвать исключение DeckEmpty.

Поскольку этот класс создает объекты карт, он должен иметь деструктор, который удаляет все связанные объекты карт при удалении колоды.

Ниже приведено объявление класса для класса Deck.

//*********************************************************
//  CLASS DECLARATION
//*********************************************************
#include “Card.h”
class Deck
{
//*****************************************************
// Public Members
//*****************************************************
public:
// Exception classes
class DeckEmpty {};

// Constructors/Destructors
Deck(); // creates the cards and sorts them
~Deck(); // frees all the cards

// Methods
//****************************************************
// dealCard
//
// return the next available card in the shuffled deck
//****************************************************
Card      dealCard();

//****************************************************
// shuffle
//
// shuffle the cards
//****************************************************
Void      shuffle();      // shuffle the deck//****************************************************
// getCardCount
//
// return the number of unused cards in the shuffled
//     deck
//****************************************************
int       getCardCount(); // how many cards left

//****************************************************
// toString
//
// return a newline (\n) delimited list of the shuffled
//    cards
//*****************************************************
string    toString();

//*****************************************************
// Private Members
//*****************************************************
private:
// array to hold unshuffled cards
Card      cards[DECK_SIZE];

// array to hold shuffled cards
Card*     shuffledCards[DECK_SIZE];

// index of next card to deal from shuffled cards
int       nextCardIndex;
};

2

Решение

Это действительно не имеет никакого смысла для меня тоже. В частности, немного о параллельном массиве перемешанных карт неясно. И утверждение, что ему нужен деструктор, потому что он создает объекты Card, просто неверно. Возможно, он имеет в виду, что он создает объекты Card динамически, но, во-первых, это не то, что он сказал, а во-вторых, я не вижу в этом необходимости. Я думаю, что вы должны поговорить со своим профессором.

Однако первый шаг очень прост.

«1. Создать колоду динамически

Deck *my_deck = new Deck;

Решаемые.

Почему вы должны динамически создавать колоду — это другой вопрос, но он попросил вас сделать это.

Я совсем не уверен, что твой профессор знает, о чем говорит.

1

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

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

  1. Создайте колоду динамически

Это ответ:

Deck* obj = new Deck();

То, что вы видите выше, это новое выражение. http://en.cppreference.com/w/cpp/language/new
С помощью этого выражения новые объекты создаются динамически.

2