Мой профессор поручил нам эту домашнюю работу, однако я не могу понять, как сделать первый шаг.
Я никого не прошу делать домашнее задание, просто, пожалуйста, кто-нибудь поможет мне с первым вопросом
Этот вопрос основан на двух файлах (которые он провидел)
«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;
};
Это действительно не имеет никакого смысла для меня тоже. В частности, немного о параллельном массиве перемешанных карт неясно. И утверждение, что ему нужен деструктор, потому что он создает объекты Card, просто неверно. Возможно, он имеет в виду, что он создает объекты Card динамически, но, во-первых, это не то, что он сказал, а во-вторых, я не вижу в этом необходимости. Я думаю, что вы должны поговорить со своим профессором.
Однако первый шаг очень прост.
«1. Создать колоду динамически
Deck *my_deck = new Deck;
Решаемые.
Почему вы должны динамически создавать колоду — это другой вопрос, но он попросил вас сделать это.
Я совсем не уверен, что твой профессор знает, о чем говорит.
Мой профессор поручил нам эту домашнюю работу, однако я не могу понять, как сделать первый шаг. Я никого не прошу делать домашнее задание, просто, пожалуйста, кто-нибудь поможет мне с первым вопросом
- Создайте колоду динамически
Это ответ:
Deck* obj = new Deck();
То, что вы видите выше, это новое выражение. http://en.cppreference.com/w/cpp/language/new
С помощью этого выражения новые объекты создаются динамически.