2011-12-06 15 views
17

Tengo muchos errores en mi proyecto final (un sim de poker y blackjack). Estoy usando un vector para implementar las "manos" en la clase blackJack, y estoy usando un tipo de datos estructurados declarados en otra clase, que se hereda públicamente. El error que me preocupa es el compilador que uso diciéndome que no estoy declarando un tipo en el vector.Error: el vector no nombra un tipo

archivo de cabecera 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 

archivo de cabecera tarjeta (este es el gato negro clase hereda de):

#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 

Respuesta

15

uso:

std::vector <Acard> playerHand; 

todas partes calificarlo por std::

o DO:

using std::vector; 

en su archivo CPP.

Tiene que hacer esto porque vector se define en el espacio de nombres std y no le dice a su programa que lo encuentre en el espacio de nombres std, necesita decir eso.

47

Olvidó agregar std:: prefijo de espacio de nombres a vector nombre de clase.

9

Necesitas o bien da derecho vector con su espacio de nombres (que es std), o importar el espacio de nombres en la parte superior de su archivo CPP:

using namespace std; 
+8

No está mal. Pero por favor no hagas esto. –

+1

U puede hacerlo, pero solo en archivos fuente. No en encabezados porque entonces U será algo muy malo (me refiero a algunos espaguetis). – Hauleth

+0

@LokiAstari ¿por qué no hacer esto? ¿No es esto para lo que está el 'uso del espacio de nombres'? o es el problema con la inundación de su espacio de nombres con todo, desde std? (No estoy discutiendo, estoy aprendiendo C++) –

8

también usted puede añadir #include<vector> en la cabecera. Cuando dos de las soluciones anteriores no funcionan.

+1

Por alguna razón, el vector solo funciona cuando está incluido en mi archivo de encabezado. Si lo pongo en mi archivo fuente, no funciona y es el único que funciona de esta manera. ¿Por qué? – JoeManiaci

Cuestiones relacionadas