class Card {
friend ostream &operator<<(ostream &, const Card &);
public:
Card(); // default constructor
Card(int, int); // give initial values for suit and rank
Card(const Card &); // copy constructor
~Card(); // destructor
void display(ostream &) const;
bool operator==(const Card &) const;
bool operator<(const Card &) const;
bool operator>(const Card &) const;
bool operator<=(const Card &) const;
bool operator>=(const Card &) const;
bool operator!=(const Card &) const;
const Card &operator=(const Card &);
private:
int suit; // takes value 0-3 (for clubs, diamonds, etc)
int rank; // takes value 0-12 (for deuce, three, etc.)
static const char *suit_names[4]; // words for displaying suits
static const char *rank_names[13]; // words for displaying ranks
};
class Deck {
friend ostream &operator<<(ostream &, const Deck &);
public:
Deck(); // default constructor
Deck(const Deck&); // copy constructor
~Deck(); // destructor
void shuffle();
const Card &deal();
bool operator==(const Deck &) const;
const Deck &operator=(const Deck &);
void display(ostream &) const;
private:
Card *cards[52];
int deal_point; // keeps track of which card to deal next
};