enum faceValue{Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten,
              Jack, Queen, King, Ace};
enum suit{Clubs, Diamonds, Hearts, Spades};

class Card {
public:
    Card(faceValue, Suit);        // Constructor
    Card(const Card&);            // Copy constructor
    const Card& operator=(const Card &);   // Assignment operator 
    virtual ~Card();              // Destructor
    int pointValue();             // What card is worth in blackjack
    void display();               // display card
private:
    Card();                       // Default constructor
    faceValue myValue;            // face value of card
    suit mySuit;                  // suit of card
    // Note: if you choose, you may instead store the private data as:
    // int myCard;   // an integer from 1 to 52
    // In this case, you'll have to change the constructor
};

class Deck {
public:
    Deck();              // Default constructor
                         // Copy constructor
                         // Assignment operator 
                         // Destructor
    void init();         // Initialize the deck to contain the proper 52 cards
    void shuffle();      // Put the cards in the deck in random order
    void display();      // Display all cards in deck in order (for test/debug)
    Card deal_one();     // Return the next card on the deck
private:
    vector <Card> myCards;
    // Note:  you  may also store the private data as an array of 52 Cards
    // If you choose to do this, then you will have to add functions to
    // the Card class to allow you to set a card's value
}

Additional classes:

BlackJack Hand:
member functions needed to do the following:
    default constructor
    Copy constructor
    Assignment operator 
    Destructor
    accept another card into the hand
    return the best total point value in the hand
        (highest possible point value that does not exceed 21)
    display as player hand
    display as dealer hand
    reset hand
data members
    vector of Cards

Dealer:
member functions needed to do the following:
    default constuctor
    constructor that lets you initialize a pointer to the Deck 
    Copy constructor
    Assignment operator 
    Destructor
    play hand (take cards until no longer allowed to hit)
    possibly a bool function to tell whether or not Dealer has busted
    reset hand
data members
    Blackjack hand
    pointer to the deck

Player:
    default constructor
    Copy constructor
    Assignment operator 
    Destructor
    play hand (take cards until user no longer wants to hit)
    utility function to get input from user
    possibly a bool function to tell whether or not player has busted
    reset hand
data members
    Blackjack hand 
    pointer to the deck