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;
}