foreach中的C++枚举

Spe*_*cer 8 c++ foreach enums

可能的重复:
枚举C++
C++中的枚举:迭代枚举

我有一个二十一点游戏的卡片类,有以下枚举:

enum Rank { Ace, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King };
enum Suit { Clubs, Diamonds, Hearts, Spades };
Run Code Online (Sandbox Code Playgroud)

当我创建甲板时,我想编写如下代码:

// foreach Suit in Card::Suit
//   foreach Rank in Card::Rank
//     add new card(rank, suit) to deck
Run Code Online (Sandbox Code Playgroud)

我相信c ++中没有foreach.但是,我如何遍历枚举?

谢谢,斯宾塞

Mtn*_*ark 20

enum为了方便起见,通常会添加元素:

enum Rank {
    Ace, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King,
    RankFirst = Ace, RankLast = King
};
enum Suit {
    Clubs, Diamonds, Hearts, Spades,
    SuitFirst = Clubs, SuitLast = Spades
};
Run Code Online (Sandbox Code Playgroud)

然后你可以编写你的循环:

for (int r = RankFirst; r <= RankLast; ++r) {
    for (int s = SuitFirst; s <= SuitLast; ++s) {
        deck.add(Card((Rank)r, (Suit)s));
    }
}
Run Code Online (Sandbox Code Playgroud)