使用结构数组创建typedef

Creating typedef with arrays of structs

本文关键字:创建 typedef 数组 结构      更新时间:2023-10-16

我正试图在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

我想做的事情可能吗?如果是,我当前的代码怎么了/出了什么问题

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

typedef Card Hand[5];