如何在类中定义枚举并从外部使用它

Gri*_*fin 7 c++ struct enumeration class

仅仅因为我不知道在我的c ++书籍或谷歌上究竟在哪里查找.我如何在类中实际定义一些枚举(在本例中{ left=1, right=2, top=3, bottom=4 }).我希望能够将此枚举作为参数传递给成员函数而不是整数,因此在外部使用枚举...

有没有办法可以做到这一点,还是有更好的方法我可以只针对该类进行枚举?

这是不起作用的代码,enum mySprite::<unamed> myySprite::side member mySprite "mySprite::side" is not a type name出于某种原因说:

class mySprite : public sf::Sprite
{
public:
    enum{left=1, right=2, top=3, bottom=4} side;

    float GetSide(side aSide){
        switch(aSide){
            // do stuff
        }
    };
};
Run Code Online (Sandbox Code Playgroud)

gre*_*olf 6

让代码工作所需的最简单的更改是:

class mySprite : public sf::Sprite
{
public:
    enum side{ left=1, right=2, top=3, bottom=4 };

    float GetSide(side aSide)
    {
        switch(aSide)
        {
            // do stuff
            // add breaks; as appropriate
            case left:
            case right:
            case top:
            case bottom:
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

你也可以这样做:

    typedef enum {left = 1, right, top, bottom} side;
Run Code Online (Sandbox Code Playgroud)

这意味着为您的mySprite类定义一个匿名枚举类型,并使side别名有效地完成与上面代码相​​同的操作.对于简洁性,只需要为第一个枚举值分配一个起始整数.除非您明确指定其他值,否则在该点之后的所有值都被理解为每次递增1.