2011-12-27 9 views
5

Digamos que quiero crear una clase de tarjeta. y quieren tener las enumeraciones de las tarjetasDonde definir enumeraciones

2,3,4,5,6,7,8,9, J, Q, K, A, el archivo de cabecera

¿Dónde está el mejor lugar para definir este Card.h o Card.cpp?

+2

Por supuesto, los números no son nombres de identificadores válidos ... – ildjarn

+0

Realmente depende de qué partes de su código necesitan acceso a la enumeración. – Marlon

Respuesta

3

lo haría así, en la definición de la clase de tarjeta:

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

Va a ser un nuevo tipo. Así que probablemente lo pondría en el archivo de encabezado en caso de que lo necesite en otras unidades de compilación.

0

¿Qué tal algo como esto:

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

La mejor manera de definir la enumeración es declararla en el archivo de encabezado. Entonces, puede usarlo en cualquier lugar que desee al incluir ese archivo de encabezado durante la compilación.