I am trying to make a deck of cards using a vector that shuffles, and then prints out the deck using a toString function. I am close, but some weird things are happening... Card.cpp Code: #include <iostream> #include "Card.h" #include "DeckOfCards.h" using namespace std; int face, suit; static string faces[14] = {"One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King", "Ace"}; static string suits[4] = {"Clubs", "Spades", "Diamonds", "Hearts"}; Card::Card(int aFace, int aSuit) { face = aFace; suit = aSuit; } string Card::toString() { return(faces[face] + " of " + suits[suit]); } DeckOfCards.cpp Code: #include <iostream> #include <vector> #include "Card.h" #include "DeckOfCards.h" using namespace std; vector<Card> deck; int currentCard = -1; DeckOfCards::DeckOfCards() { for(int i = 0; i < 13; i++) { for(int j = 0; j < 4; j++) { deck.push_back(Card(i, j)); } } } void DeckOfCards::shuffle() { srand (time(NULL)); random_shuffle (deck.begin(), deck.end()); } Card DeckOfCards::dealCard() { currentCard++; return deck.at(currentCard); } int DeckOfCards::getCurrentCard() { return currentCard; } bool DeckOfCards::moreCards() { if(currentCard < 52) { return true; } else { return false; } } DeckOfCardsDriver.cpp Code: #include <iostream> #include "Card.h" #include "DeckOfCards.h" using namespace std; int main() { DeckOfCards deck; //deck.shuffle(); for(int i = 0; i < 52; i++) { cout << deck.dealCard().toString() << endl; cout << deck.getCurrentCard() << endl; } return(0); } Theres also 2 header files. Any help of why the cards arent actually changing would be great...I've been looking at it for a while now...thanks!