Я создал виртуальную военную игру в C ++, сейчас я пытаюсь реализовать какой-то художественный стиль, печатая изображения ascii каждой карты. Выводы хорошие, когда они отделены от основной программы, а сама игра работает нормально. Однако, когда я пытаюсь объединить их, вызывая метод в моем классе Art (draw pic), мой компилятор внезапно выдает какой-то большой положительный код ошибки.
Мой урок искусства начинается с моего игрового класса. У меня также есть класс Player, который тоже выходит из Game. Два метода, openFile и getFileContents, являются виртуальными в моем классе Game. В основном я создаю указатель на экземпляр Art и использую ->, чтобы попытаться вызвать методы рисования.
Это часть main, которая содержит проблемы ...
void startGame() {
Function functionObj;
vector<Card> deck = functionObj.makeDeck();
Art *instanceArt;
Player human;
human.setDeck(&deck);
human.setHand(functionObj.deal());
Player computer;
computer.setHand(functionObj.deal());
string nextRound;
// Displays title screen
human.openFile(1,1);
cout << "Hello, " << human.updateName() << ". Let's play a game." << endl;
// While either player still has cards (i.e. game ends when one player out of cards)
while (!human.getHand().empty() && !computer.getHand().empty()) {
// Show two cards from user and computer
cout << "You drew: " << human.getHand()[0].rankToString() << " of " << human.getHand()[0].suitToString() << endl;
instanceArt->openFile(human.getHand()[0].getSuit(), human.getHand()[0].getRank()); // SHOULD PRINT CARD DIAGRAM BUT CRASHES
cout << "Computer drew: " << computer.getHand()[0].rankToString() << " of " << computer.getHand()[0].suitToString() << endl;
instanceArt->openFile(computer.getHand()[0].getSuit(), computer.getHand()[0].getRank()); // SHOULD PRINT CARD DIAGRAM BUT CRASHES
Это мой Game.h, это мой базовый абстрактный класс
class Game {
protected:
vector<Card> deck;
vector<Card> hand;
public:
virtual std::string updateName() const = 0;
virtual int openFile(int gameSuit, int rank) const = 0;
virtual std::string getFileContents(ifstream& File) const = 0;
void setDeck(vector<Card> *givenDeck);
};
Это мой Player.h, он расширяет Game
class Player : public Game {
public:
std::string updateName() const override;
vector<Card> getHand();
void setHand(vector<Card> givenHand);
int openFile(int any, int thing) const override;
std::string getFileContents(ifstream& File) const override;
};
Наконец, это мой Art.h, это тоже расширяет Game
class Art : public Game {
public:
virtual int openFile(int gameSuit, int rank) const override;
virtual std::string getFileContents(ifstream& File) const override;
};
Я хотел бы попытаться исправить проблему, не слишком меняя классы, потому что это для задания, и я более или менее просто пытаюсь продемонстрировать полиморфизм и наследование. Большое спасибо заранее!