繁体   English   中英

C++ 我如何 go 关于将字符串数组中的点设置为枚举变量

[英]C++ How do I go about setting a point in a string array to an enum variable

所以我试图做的是用一副纸牌随机填充一个字符串数组。 我试图通过“随机”创建一个介于 0-51 之间的数字来做到这一点,这样我在该位置的数组将等于枚举套装后跟枚举值。 因此,查看我的代码,您可以看到我在数组中设置值的方式会导致错误。 我如何在保持枚举的同时完成此任务?

class DeckOfCards{
private:
    string deck[52];
    int sCount = 0;
    int vCount = 0;
    enum Suits{hearts, diamonds, clubs, spades};
    enum Value{two, three, four, five, six, seven, eight, nine, ten, jack, queen, king, ace};
public:
    DeckOfCards(){
        deck[52];
    }
    void shuffle(DeckOfCards noShuff){
        srand(time(nullptr));
        for(int i = 0; i < 52; i++){
            deck[rand() % 52] = Suits[sCount] + Value[vCount];
            sCount++;
            vCount++;
        }
    }
};

您的第一个问题是您试图错误地引用SuitesValue的枚举值。 Value[0]不会编译,但Value::two会。 由于这不是枚举 class,因此0也等同于Value::two (正如1等同于Value::three )。

如果不解决代码中的其他问题(例如sCountvCount不受SuitsValue的大小限制),您可以尝试deck[rand() % 52] = static_cast<char>(sCount + vCount)

但是,我强烈建议您将“卡片”抽象为 class 而不是使用std::string (见下文)。

class Card {
 ...
};

class DeckOfCards{
private:
    Card deck[52]; <-- Deck of "Cards"
    ...
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM