范围内的枚举

时间:2014-06-29 16:12:11

标签: c++ c++11 enums

我正在研究一个简单的Breakout克隆来练习我的fwenling C ++技能。游戏的资源是一个名为“资源”的类的子类,它将包含一个用于识别资源类型和一些虚拟函数的ID。到目前为止,该课程看起来像这样:

class Resource {
private:
    int _id;
protected:
    enum ResourceType {
        TEXT
        , PADDLE
        , BALL
        , BRICK
    };
public:
    Resource(int resourceID) : _id{resourceID} {}
};

然而,为了熟悉C ++ 11,我想切换到范围枚举。我确定我在这里遗漏了一些东西(毕竟,代码不会编译!)。错误的修改代码如下:

class Resource {
private:
    ResourceType _id;
protected:
    enum class ResourceType : int {
        TEXT = 0
        , PADDLE
        , BALL
        , BRICK
    };
public:
    Resource(ResourceType resourceID) : _id{resourceID} {}
};

鉴于我收到的编译错误("错误:'资源类型'未命名类型"在行ResourceType _id;),似乎我可能需要在其他地方对我的枚举类进行原型设计,但我的尝试却徒劳无功。请指教!

1 个答案:

答案 0 :(得分:4)

您只需要在使用之前声明类型,如下所示:

class Resource {
protected:
    enum class ResourceType : int {
        TEXT = 0
        , PADDLE
        , BALL
        , BRICK
    };
private:
    ResourceType _id;
public:
    Resource(ResourceType resourceID) : _id{ resourceID } {}
};