Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在哪里定义枚举_C++ - Fatal编程技术网

C++ 在哪里定义枚举

C++ 在哪里定义枚举,c++,C++,假设我想创建一个卡片类。并且想要有卡片的枚举 2,3,4,5,6,7,8,9,J,Q,K,A 定义它的最佳位置是什么,头文件Card.h或Card.cpp?它将是一个新的类型。因此,我可能会将它放在头文件中,以防在其他编译单元中需要它。我会这样做,在您的卡类定义中: class Card { public: typedef enum { Two = 0, Three, Four, Five, Six, Seven

假设我想创建一个卡片类。并且想要有卡片的枚举

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


定义它的最佳位置是什么,头文件Card.h或Card.cpp?

它将是一个新的类型。因此,我可能会将它放在头文件中,以防在其他编译单元中需要它。

我会这样做,在您的卡类定义中:

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

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

像这样的怎么样:

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;
};

定义枚举的最佳方法是在头文件中声明它。因此,通过在编译过程中包含头文件,您可以在任何地方使用它。

当然,数字不是有效的标识符名称……这实际上取决于代码的哪些部分需要访问枚举。