2

我正在尝试解决 ProjectEuler 上的问题 54。对于那些不熟悉它的人来说,它涉及为 1000 场扑克游戏寻找赢家。

我遇到的问题是,当我尝试使用 typedef 使我的程序更简单、更易于阅读时,我遇到了以下问题。

错误

pokerchecker.hpp:37: error: expected unqualified-id before '[' token
pokerchecker.hpp:38: error: ISO C++ forbids declaration of 'Hand' with no type

紧随其后的是许多其他错误,但它们似乎是由上述原因引起的。

第37行如下

typedef Card[5] Hand;

完整标题

#ifndef POKERCHECKER_HPP
#define POKERCHECKER_HPP

class PokerChecker{
public:
    PokerChecker(){};
    ~PokerChecker(){};

    enum Rank{
        TWO = 2,
        THREE,
        FOUR,
        FIVE,
        SIX,
        SEVEN,
        EIGHT,
        NINE,
        TEN,
        JACK,
        QUEEN,
        KING,
        ACE
    };

    enum Suit{
        HEART,
        DIAMOND,
        CLUB,
        SPADE
    };

    struct Card{
        Rank rank;
        Suit suit;
    };

    typedef Card[5] Hand; // line 37
    typedef Hand[2] PokerGame;
    typedef short Winner;

    Winner EvaluateGame(PokerGame unsortedGame);

private:
    PokerGame SortGame(PokerGame unsortedGame);
    Hand SortHand(Hand);

    // each function returns the highest card (for comparing two similar hands)
    Card CheckRF(Hand);
    Card CheckSF(Hand);
    Card CheckFOAK(Hand);
    Card CheckFH(Hand);
    Card CheckF(Hand);
    Card CheckS(Hand);
    Card CheckTOAK(Hand);
    Card CheckTP(Hand);
    Card CheckOP(Hand);
    Card CheckHC(Hand);
};

#endif //POKERCHECKER_HPP

我正在尝试做的事情可能吗?如果是这样,我当前的代码有什么问题/有什么问题?

4

1 回答 1

10

声明数组 typedef 的正确方法是:

typedef Card Hand[5];
于 2013-07-26T01:38:23.187 回答