2011-12-06 8 views
17

Ho molti errori nel mio progetto finale (un sim di poker e black jack). Sto usando un vettore per implementare le "mani" nella classe blackJack e sto usando un tipo di dati strutturati dichiarato in un'altra classe, che è ereditato pubblicamente. L'errore che mi preoccupa è il compilatore che sto usando dicendomi che non sto dichiarando un tipo nel vettore.Errore: il vettore non indica un tipo

blackjack file di intestazione:

#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 

file di intestazione della carta (questo è il black jack classe eredita da):

#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 

risposta

15

uso:

std::vector <Acard> playerHand; 

ovunque qualificano facendo std::

o fare:

using std::vector; 

nel file cpp.

quello che dovete fare questo perché vector è definita nel std spazio dei nomi e non dite il vostro programma di trovare in std spazio dei nomi, è necessario dire che.

47

Hai dimenticato di aggiungere std:: prefisso dello spazio dei nomi al nome della classe vector.

9

è necessario o qualificare vector con il suo spazio dei nomi (che è std), o importare lo spazio dei nomi nella parte superiore del file CPP:

using namespace std; 
+8

Non sbagliato. Ma per favore non farlo. –

+1

U può farlo solo nei file di origine. Non nelle intestazioni perché allora U sarà una cosa molto brutta (intendo alcuni spaghetti). – Hauleth

+0

@LokiAstari perché non farlo? Non è per questo 'usare lo spazio dei nomi'? o è il problema di inondare il tuo spazio dei nomi con tutto da std? (Non sto discutendo, sto imparando C++) –

8

Inoltre è possibile aggiungere #include<vector> nell'intestazione. Quando due delle soluzioni di cui sopra non funzionano.

+1

Per qualche motivo il vettore funziona solo se incluso nel mio file di intestazione. Se lo metto nel mio file sorgente non funziona ed è l'unico che funziona in questo modo. Perché? – JoeManiaci

Problemi correlati