c ++定义不同命名空间的枚举

时间:2012-04-23 16:32:54

标签: c++ enums namespaces

我有以下头文件:

namespace First
{
    namespace Second
    {
        class Limit
        {
            public:
                enum Status
                {
                    GOOD,
                    BAD
                };
        }
    }
}

由于它是专有的,我更改了名称,只留下了相关信息。

在我自己的班上,我有......

First :: Second :: Limit :: Status limit_status = First :: Second :: Limit :: Status :: OK;

但是我收到一个错误: 错误:类First :: Second :: Limit :: Status不是类或命名空间

我能够声明该枚举的变量,但不能将其设置为任何值。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

First::Second::Limit::Status limit_status = First::Second::Limit::GOOD;

您不需要Status位。可以将其视为在const int内定义多个Limit,您不会说Limit::int::GOOD

答案 1 :(得分:4)

如果你有C ++ 11,请使用enum class

namespace First
{
    namespace Second
    {
        class Limit
        {
            public:
                enum class Status
                {
                    GOOD,
                    BAD
                };
        }
    }
}

现在您可以使用Status作为范围。如果没有,您将不得包含Status::部分。