im writing generic code for card games and i can seem to fix this one error when i compile PileOfCards.cpp it says there is no 'operator=' what am i doing wrong
PileOfCards.h:
Code:
#ifndef PILEOFCARDS
#define PILEOFCARDS


#include <iostream>
#include "Card.h"
using namespace std;

class PileOfCards
{
  public:
	PileOfCards();
	void MakeDeck();
	void Shuffle();
	Card TakeTopCard();
	void AddCardToPile(Card c);
	const PileOfCards & operator = (const PileOfCards & 

original);
  private:
	Card * Pile;
	int size;
	int back;
};

#endif
PileOfCards.cpp:
Code:
#include <iostream>
#include <cstdlib>
#include "PileOfCards.h"
using namespace std;
	
  PileOfCards::PileOfCards() {
	size = 52;
	Pile = new Card[size];
	back = 0;
	}

  void PileOfCards::MakeDeck() {
	size = 52;
	Pile = new Card[52];
	int back = 0;
	for(suit i = HEART; i <= SPADE; i + 1){
		for(value j = ACE; j <= KING; j + 1)
		Pile[back] = new Card(i, j, DOWN);
		back+1;
		}			
	}

  void PileOfCards::Shuffle() {
	for(int l = 0; l < 1000; l+1) {
		Card c = TakeTopCard();
		int x = rand();
		for(int a = back; a > x; a-1) {
			Pile[a] = Pile[a-1];
			}
		Pile[x] = c;
		}
	}

  Card PileOfCards::TakeTopCard() {
	Card d = Pile[0];
	for(int g = 0; g < back; g+1) {
		Pile[g] = Pile[g + 1];
		}
	back - 1;
	return d;
	}

  void PileOfCards::AddCardToPile(Card c) {
	for(int f = back; f > 0; f-1) {
		Pile[f+1] = Pile[f];
		}
	Pile[0] = c;
	}

  const PileOfCards & PileOfCards::operator = (const PileOfCards 

& original) {
	if(this != &original){
		size = original.size;
		delete Pile;
		Pile = new Card[size];
		for(int k = 0; k < size; k + 1)
			Pile[k] = original.Pile[k];
		}
	}
Card.h:
Code:
#ifndef CARD
#define CARD
  
#include <iostream>
using namespace std;

enum status {DOWN, UP};
  enum value {ACE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, TEN, JACK, QUEEN, KING};
  enum suit {HEART, CLUB, DIAMOND, SPADE};

class Card
{  
  public:
	Card();
	Card(suit s, value v, status f);
	Card(const Card & original);
	void FaceUp();
	void FaceDown();
	status CardStatus() const;
	value CardValue() const;
	suit CardSuit() const;
	const Card & operator = (const Card & original);

  private:
	suit mySuit;
	value myValue;
	status myStatus;
};

#endif
card.cpp:
Code:
#include <iostream>
#include "Card.h"
using namespace std;

  Card::Card()
  {}

  Card::Card(suit s, value v, status f){
	mySuit = s;
	myValue = v;
	myStatus = f;
  }

  Card::Card(const Card & original){
	mySuit = original.mySuit;
	myValue = original.myValue;
	myStatus = original.myStatus;
  }

  void Card::FaceUp(){
	myStatus = UP;  
  }

  void Card::FaceDown(){
	myStatus = DOWN;
  }

  status Card::CardStatus() const {
	return myStatus;
  }

  value Card::CardValue() const {
	return myValue;
  }

  suit Card::CardSuit() const {
	return mySuit;
  }

  const Card & Card::operator = (const Card & original) {
	if(this != &original) {
		mySuit = original.mySuit;
		myValue = original.myValue;
		myStatus = original.myStatus;
		}
	return * this;
  }