在foreach中的C ++枚举 [英] C++ enum in foreach

查看:142
本文介绍了在foreach中的C ++枚举的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


可能的重复项:

在C ++中枚举枚举

C ++:迭代枚举


对于具有以下枚举的二十一点游戏:

 枚举Rank {Ace,Two,Three,Four,Five,Six,八,九,十,杰克,女王,王}; 
enum Suit {Clubs,Diamonds,Hearts,Spades};

当我创建套牌时,我想这样编写代码:

  // foreach Suit in Card :: Suit 
// foreach卡中的排名:: Rank
//添加新卡,suit)to deck

我相信在c ++中没有foreach。

解决方案



/ div>

通常向枚举添加元素以便于:

 枚举排名{
Ace,Two,Three,Four,Five,Six,Seven,Eight,Nine,Ten,Jack,Queen,King,
RankFirst = Ace,RankLast = King
};
enum Suit {
俱乐部,钻石,心,黑桃,
SuitFirst =俱乐部,SuitLast =黑桃
};

然后你可以将你的循环写成:

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


Possible Duplicates:
Enumerate over an enum in C++
C++: Iterate through an enum

I've have a card class for a blackjack game with the following enums:

enum Rank { Ace, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King };
enum Suit { Clubs, Diamonds, Hearts, Spades };

When I create the deck I want to write the code like this:

// foreach Suit in Card::Suit
//   foreach Rank in Card::Rank
//     add new card(rank, suit) to deck

I believe there is no foreach in c++. However, how do I traverse an enum?

Thanks, Spencer

解决方案

It is common to add elements to the enum to facilitate this:

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

Then you can write your loops as:

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

这篇关于在foreach中的C ++枚举的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆