I've been checking my code over and over and over again, I'm missing something, perhaps someone with an outside view on the issue can find something, here is the code causing the problem (i think).

Code:
#ifndef DEALER_H
#define DEALER_H
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include "Deck.h"
#include "Human_Player.h"
#include "Player.h"

class Dealer : public Player
{
public:

	Dealer()
	{
		playerid = 0;
		InitLookups();
	}
	void ShuffleDeck()
	{
		random_shuffle(deck.cards.begin(), deck.cards.end());
	} 

	int Turn(Human_Player & player)
	{
		int result = player.GetInput();
		if (result == 1)
		{
			Deal(1, player);
			return 1; // is player's hand > 21?
		}
		if (result == 2)
		{
			return 2; //compare cards declare winner
		}
		if (result == 3)
		{	
			return 3; //player folded, remove player from game.
		}
		result = player.GetInput();
	}

	void Deal(int howmanycards, Player & player)
	{
		if {player.playerid == 0)
		{
			std::cout << "Dealer's Cards" << std::endl;
			std::cout << "--------------" << std::endl;
			for (int loop = 0; loop != howmanycards; loop++) 
			{
				player.hand.push_back(deck.cards.back());
				if (loop == 2)
				{
					std::cout << "Card" << std::endl;	
					deck.cards.pop_back();
				}
				else
				{
				ReadCards(hand.back().Value, hand.back().Suit);
				deck.cards.pop_back();
				}
			}
		}
		if (player.playerid !=0)
		{
			for (int loop = 0; loop != howmanycards; loop++) 
			{
				hand.push_back(deck.cards.back());
				ReadCards(hand.back().Value, hand.back().Suit);
				deck.cards.pop_back();
			}
		}
	}

	void ReadCards(int value,int suit)
	{
		std::cout << valuelookup[value].c_str() << " of "
			 << suitlookup[suit].c_str() << std::endl;
		//card value and suit as an index...
	}

	// Creates Lookup tables for outputting card suits and values
	void InitLookups()
	{
		string suit;
		suit = "Clubs"; Add(suit);
		suit = "Diamonds"; Add(suit);
		suit = "Hearts"; Add(suit);
		suit = "Spades"; Add(suit);

		string value; 
		value = "Two"; Add2(value);
		value = "Three"; Add2(value);
		value = "Four"; Add2(value);
		value = "Five"; Add2(value);
		value = "Six"; Add2(value);
		value = "Seven"; Add2(value);
		value = "Eight"; Add2(value);
		value = "Nine"; Add2(value);
		value = "Ten"; Add2(value);
		value = "Jack"; Add2(value);
		value = "Queen"; Add2(value);
		value = "King"; Add2(value);
		value = "Ace"; Add2(value);
	}
private:

	void Add(string suit)
	{
		suitlookup.push_back(suit);
	}

	void Add2(string value)
	{
		valuelookup.push_back(value);
	}
	//string lookups
	vector<string> suitlookup;
	vector<string> valuelookup;
	vector<Card> hand;	
	Deck deck;
	friend class Game;
};
#endif
Here is the error:
Code:
------ Build started: Project: Blackjack, Configuration: Debug Win32 ------
Compiling...
Blackjack.cpp
c:\documents and settings\jon c\desktop\blackjack\blackjack\game.h(9) : error C2079: 'Dealer::Game::dealer' uses undefined class 'Dealer'
c:\documents and settings\jon c\desktop\blackjack\blackjack\blackjack.cpp(15) : fatal error C1075: end of file found before the left brace '{' at 'c:\documents and settings\jon c\desktop\blackjack\blackjack\dealer.h(11)' was matched
Build log was saved at "file://c:\Documents and Settings\Jon C\Desktop\Blackjack\Blackjack\Debug\BuildLog.htm"
Blackjack - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
It's rediculous, where do I ever say dealer::game::dealer?
And as far as I can tell all my brackets and semicolon's are in place?