Lab 3 - BlackJack Hand

Create a BlackJackHand class using an array of pointers
In class this week, we will talk about pointers and allocating objects. The driver used in this assignement allocates PlayingCard objects, and passes them to an BlackJackHand object. The BlackJackHand object will free the allocated PlayingCard objects.
This assignment has 2 parts, the first is very easy, the second will probably take some time.
Part 1
Rename the member functions of the PlayingCard class so that the member functions begin with a lowercase letter instead of an uppercase letter. This will bring the PlayingCard class in line with the naming convention in our textbook.
Part 2
Create the BlackJackHand class
For our hand, the maximum number of cards in the hand will be 5.
Within the class, you will have to have a way to store the cards. Since the point of the lab is to get practice with pointers, you will need to use an array of pointers to PlayingCard objects. You will also have to have a way to know how many cards have been added to the hand. Two ways of doing this come to mind. You can look through the array and see how many array elements contain pointers to PlayingCards (as opposed to being NULL). The other way is to keep a variable with the card count. If you use the card count variable, you will have to make sure you keep that variable current.
As you develop and debug this class, you may run into some errors due to pointers that don't point to anything that exists. The errors you get from this may vary. One thing that commonly happens is that the program runs part way and then you get a message from windows telling you that the program has caused an unknown error.
I strongly recommend getting started on this assignment early so that you can get help with it via email or on the discussion forum.
To complete this assignment, link the class you create (.h and .cpp files) with the driver provided on moodle, BlackJackHandDriver.cpp. The only alteration you can make to the driver is to change the file(s) for the #include statements and to add a system("pause"); if necessary. If you think you have found a bug in the driver, go ahead and fix it and send me an e-mail or moodle message right away so I can check the bug and your bug fix.

To turn in:
zip up your entire project (all the source and header files and the .cbp file) and upload it to moodle.
Public Interface
Here are the descriptions of the public member functions:
BlackJackHand()
Default constructor. Initializes private member variables.
BlackJackHand(PlayingCard *c1, PlayingCard *c2);
Overloaded constructor. Initializes private member variables and adds c1 and c2 to the hand.
bool addCard(PlayingCard *card)
For adding a card to the hand. It will print a warning, not add the card, and return false if one of these conditions is true:
•	 The low score of the hand is 21
•	The hand is bust (low value > 21)
•	The hand is full (the full number of cards has been added to the hand)
If the card is successfully added, this function returns true.
int getCardCount()
Returns the number of cards that are in the hand.
int getHighScore()
As you probably know, blackjack allows an ace to count as either a 1 or an 11. This function returns the score of the hand counting the first ace in the hand as an 11. Make sure you don't count all the aces as 11.
int getLowScore()
Returns the score counting all the aces as 1.
void clearHand()
This function clears the hand. Any cards in the hand are deleted. Deleted means that the delete operator is used on every card in the hand.
bool isBust()
Returns true if the lowScore is above 21, false if not.
bool isFull()
Returns true if the hand is full, i.e. the hand has 5 cards in it.
bool canTakeCard()
Returns true if the hand can take another card. That means that the low score is less than 21 and the hand has less than 5 cards in it.
string getAllCardCodes()
Displays the cards in the hand. Each card is displayed followed by a space.