Проблемы ООП — Производный класс

Я пытаюсь выяснить неопределенную ссылку на Class :: Function (). Это проект, на который я видел несколько ответов, и я просмотрел ответы для других, и кажется, что код похож, но я не могу найти ответ на свою конкретную проблему. Я пытаюсь использовать файлы 2 .h, их файлы реализации и драйвер для простой раздачи карт из колоды. Я ударил стену, так как я не уверен на 100%, как использовать производные классы. Мои текущие ошибки при компиляции следующие:

  • неопределенная ссылка на ‘Deck :: shuffleCards ()’
  • неопределенная ссылка на ‘Deck :: dealCard ()’
  • неопределенная ссылка на ‘Card :: getCard () const’

Любая помощь с благодарностью. Вот код

CARD.H

#ifndef CARD_H
#define CARD_H
#include <string>

using namespace std;

class Card
{

private:
string face; //Used to store value of face(A-K)
string suit; //User to store value of suit(A/R/S/B)

public:

string getCard() const; //Returns the card.

//Constructor
Card(string cardFace, string cardSuit)
{face = cardFace; suit = cardSuit;}

//Default Constructor
Card()
{}
};
#endif // CARD_H

Card.cpp

#include <iostream>
#include "CARD.H"
string Card::getCard() const
{
//Returns the card in a format of X of Y(Ace of Shields)
return (face + " of " + suit);
}

deck.h

#ifndef DECK_H
#define DECK_H
#include "CARD.H"#include <string>using namespace std;

const int SIZE = 52;  //Standard Size of Deck. Used for calculations

class Deck : private Card
{

private:
Card *deckOfCards; //Creates pointer for deck.
int currentCard; //Keeps track of the current card array location

public:
//Constructor for Deck. Creates a deck of cards.
Deck() : Card()
{
string faces[] = {"Ace", "Two", "Three", "Four", "Five", "Six",
"Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King"};
string suits[] = {"Acorns", "Shields", "Bells", "Roses"};

deckOfCards = new Card[SIZE];
currentCard = 0;
for(int i = 0; i < SIZE; i++)
{
deckOfCards[i] = Card(faces[i % 13], suits[ i / 13]);
}

}

void shuffleCards();  //Shuffles the cards.
Card dealCard(); //Returns a Card data type when this is called.
void printDeck() const; //Prints the deck.
};
#endif // DECK_H

Deck.cpp

#include <iostream>
#include <cstdlib>
#include <ctime>
#include "DECK.H"#include "CARD.H"
/**********************************************************************
* Uses 2 arrays to shuffle the cards. The function uses
* 2 arrays and random number generation with a modulus of the size of
* the deck to find the next location of the card.
**********************************************************************/
void Deck::shuffleCards()
{
currentCard = 0;

for(int first = 0; first < SIZE; first ++)
{
int second = (rand() + time(0)) % SIZE;
Card temp = deckOfCards[first];
deckOfCards[first] = deckOfCards[second];
deckOfCards[second] = temp;
}

}

Card Deck::dealCard()
{
//Checks to make sure the current card location is not greater than size.
//If so, this would indicate the deck needs to be shuffled because we're
// out of cards
if (currentCard > SIZE)
shuffleCards();
if (currentCard < SIZE)
return(deckOfCards[currentCard++]);

return deckOfCards[0];
}

//Function used to format the printing of the deck.
void Deck::printDeck() const
{
for(int i = 0; i < SIZE; i++)
{
cout << deckOfCards[i].getCard();
if((i + 1) % 5 == 0) //Prints 5 cards per line.
{
cout << endl; //If mod expression is valid, starts new line.
}
}
}

Основной драйвер

#include <iostream>
#include <string>
#include "DECK.H"#include "CARD.H"
using namespace std;

int main()
{
Deck myDeck;
Card myCard;myDeck.shuffleCards();

for(int i = 0; i< 52; i++)
{
myCard = myDeck.dealCard();
cout << myCard.getCard() << endl;
}

return 0;
}

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]