2011-12-27 24 views
5

Dire che voglio creare una classe di carte. e vogliono avere le enumerazioni per le schedeDove definire le enumerazioni

2,3,4,5,6,7,8,9, J, Q, K, A

Dov'è il posto migliore per definire questo, il file di intestazione Card.h o Card.cpp?

+2

Naturalmente, i numeri non sono nomi di identificatori validi ... – ildjarn

+0

Dipende davvero da quali parti del codice è necessario accedere all'enumerazione. – Marlon

risposta

3

vorrei fare in questo modo, nella definizione della classe carta:

class Card 
{ 
public: 
    typedef enum 
    { 
     Two = 0, 
     Three, 
     Four, 
     Five, 
     Six, 
     Seven, 
     Eight, 
     Nine, 
     Ten, 
     Jack, 
     Queen, 
     King, 
     Ace 
    } Face; 
}; 

o C++ 11:

class Card 
{ 
public: 
    enum Face: unsigned char 
    { 
     Two = 0, 
     Three, 
     Four, 
     Five, 
     Six, 
     Seven, 
     Eight, 
     Nine, 
     Ten, 
     Jack, 
     Queen, 
     King, 
     Ace 
    }; 
}; 
4

Sarà un nuovo tipo. Quindi probabilmente lo inserirò nel file di intestazione nel caso in cui ne avessi bisogno in altre unità di compilazione.

0

Che ne dite di qualcosa di simile:

class CCard 
{ 
public: 
    CCard(void); 
    virtual ~CCard(void); 

    // Card face type 
    enum eCardFaceType 
    { 
     Face_2, 
     Face_3, 
     Face_4, 
     Face_5, 
     Face_6, 
     Face_7, 
     Face_8, 
     Face_9, 
     Face_10, 
     Face_Jack, 
     Face_Queen, 
     Face_King 
    }; 

    // Card suit 
    enum eSuitType 
    { 
     Suit_Clubs, 
     Suit_Diamonds, 
     Suit_Hearts, 
     Suit_Spades 
    }; 

    // Internal data. 
protected: 
    eCardFaceType m_face; 
    eSuitType m_Suit; 
}; 
0

Il modo migliore per definire l'enumerazione è dichiararlo nel file di intestazione. Quindi, puoi usarlo ovunque tu voglia includendo quel file di intestazione durante la compilazione.

Problemi correlati