C++中的枚举从c ++的角度来看

Ste*_*rst 3 c c++ enums

我是一名C++程序员,我很少需要处理GCC"C".我目前正在将一些代码从C++转换为C,以便与GCC编译器一起使用.

在C++中,我将使用以下源代码.请注意,我会使用一个类作为范围.

C++来源

class Card {
public:
   enum Suit {
      Diamonds, Hearts, Clubs, Spades
   };
};

class Weapon {
public:
   enum WeaponType {
      Rocks, Clubs, Guns
   };
};

int main () {
 Suit a = Card::Clubs; 
 WeaponType b = Weapon::Clubs
}
Run Code Online (Sandbox Code Playgroud)

在"C"中没有类别,也没有办法区分两个不同的"俱乐部"关键词.尝试编译时,我收到以下错误消息

错误C2365:'俱乐部':重新定义; 以前的定义是'枚举'

C来源

enum Suit {
    Diamonds, Hearts, Clubs, Spades
};

enum WeaponType {
    Rocks, Clubs, Guns
};

int main () {
 Suit a = Clubs; 
 WeaponType b = Clubs
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是

  • 如何在同一个文件中使用相同的关键字声明两个不同的枚举?
  • 如何将范围添加到枚举中,以便我可以使用相同的枚举名称为不同的枚举分配不同的枚举?

cli*_*hlt 10

就像过去一样:

enum Suit {
    ST_Diamonds, ST_Hearts, ST_Clubs, ST_Spades
};

enum WeaponType {
    WT_Rocks, WT_Clubs, WT_Guns
};

int main () {
 Suit a = ST_Clubs; 
 WeaponType b = WT_Clubs;
 return 0;
}
Run Code Online (Sandbox Code Playgroud)