ti-enxame.com

Erro: o vetor não nomeia um tipo

Estou tendo muitos erros no meu projeto final (um pôquer e black jack sim). Estou usando um vetor para implementar as "mãos" na classe blackJack e usando um tipo de dados estruturado declarado em outra classe, que é herdada publicamente. O erro que me preocupa é o compilador que estou usando, me dizendo que não estou declarando um tipo no vetor.

arquivo de cabeçalho do 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 

arquivo de cabeçalho do cartão (esta é a classe que o black jack herda):

 #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's 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
23
Chris De Bow

Você esqueceu de adicionar std:: prefixo de namespace para vector nome da classe.

59
Hauleth

usar:

std::vector <Acard> playerHand;

em todos os lugares qualifique-o por std::

ou faça:

using std::vector;

no seu arquivo cpp.

Você precisa fazer isso porque vector está definido no espaço para nome std e não pede ao seu programa para encontrá-lo no espaço para nome std, é necessário informar isso.

16
Alok Save

Você precisa qualificar vector com seu espaço para nome (que é std) ou importar o espaço para nome na parte superior do seu arquivo CPP:

using namespace std;
12
dasblinkenlight

Além disso, você pode adicionar #include<vector> no cabeçalho. Quando duas das soluções acima não funcionam.

10
robin ranjan