Ответ 1
Вы забыли добавить std::
префикс пространства имен в vector
имя класса.
У меня много ошибок в моем финальном проекте (покер и черный сингл). Я использую вектор для реализации "рук" в классе blackJack, и я использую структурированный тип данных, объявленный в другом классе, который является общепринятым. Ошибка, о которой я беспокоюсь, - это компилятор, который я использую, говоря мне, что я не объявляю тип в векторе.
файл заголовка blackJack:
#ifndef BLACKJACK_H
#define BLACKJACK_H
#include <vector>
#include "card.h"
class blackJack: public cards
{
private:
vector <Acard> playerHand;
vector <Acard> dealerHand;
public:
blackJack();
void dealHands();
void hitOrStay();
void dealerHit();
int handleReward(int);
void printHands();
};
#endif
файл заголовка карты (это наследует класс черного гнезда):
#ifndef CARD_H
#define CARD_H
const char club[] = "\xe2\x99\xa3";
const char heart[] = "\xe2\x99\xa5";
const char spade[] = "\xe2\x99\xa0";
const char diamond[] = "\xe2\x99\xa6";
//structured data to hold card information
//including:
// a number, representing Ace-King (aces low)
//a character, representing the card suit
struct Acard
{
int number;
char pic[4];
};
// a class to hold information regarding a deck of cards
//including:
//An array of 52 Acard datatypes, representing our Deck
//an index to the next card in the array
//a constructor initializing the array indices to Ace-king in each suit
//a function using random numbers to shuffle our deck of cards
//13 void functions to print each card
class cards
{
private:
Acard Deck[52];
int NextCard;
public:
cards();
Acard getCard();
void shuffleDeck();
void cardAce(char[]);
void cardTwo(char[]);
void cardThree(char[]);
void cardFour(char[]);
void cardFive(char[]);
void cardSix(char[]);
void cardSeven(char[]);
void cardEight(char[]);
void cardNine(char[]);
void cardTen(char[]);
void cardJack(char[]);
void cardQueen(char[]);
void cardKing(char[]);
};
#endif
Вы забыли добавить std::
префикс пространства имен в vector
имя класса.
использовать:
std::vector <Acard> playerHand;
всюду квалифицируют его на std::
или do:
using std::vector;
в вашем файле cpp.
Вы должны это сделать, потому что vector
определяется в пространстве имен std
, и вы не говорите своей программе, чтобы найти ее в пространстве имен std
, вам нужно сообщить об этом.
Вам нужно либо квалифицировать vector
с его пространством имен (которое есть std
), либо импортировать пространство имен в верхней части вашего файла CPP:
using namespace std;
Также вы можете добавить #include<vector>
в заголовок. Когда два из вышеперечисленных решений не работают.