Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;定义不同命名空间的枚举_C++_Enums_Namespaces - Fatal编程技术网

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

C++ c++;定义不同命名空间的枚举,c++,enums,namespaces,C++,Enums,Namespaces,我有以下头文件: namespace First { namespace Second { class Limit { public: enum Status { GOOD, BAD }; } } } 由于它是专有的,我更改了

我有以下头文件:

namespace First
{
    namespace Second
    {
        class Limit
        {
            public:
                enum Status
                {
                    GOOD,
                    BAD
                };
        }
    }
}
由于它是专有的,我更改了名称,只留下了相关信息

在我自己的班级里我有

第一::第二::限制::状态限制\u状态=第一::第二::限制::状态::确定

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

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

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

您不需要
状态
位。可以将其视为在
Limit
中定义几个
常量int
,您不会说
Limit::int::GOOD
,如果您有C++11,请使用
枚举类

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

现在您可以使用
状态
作为范围。如果没有,则必须不包括
状态::
部分。

换句话说,
enum
不会创建类似
class
struct
union
do的命名空间。它将内部内容移植到周围的范围中。啊,好吧,看起来它与java和其他语言不同。出于好奇,这背后有什么原因吗?在java中实现的方式对我来说最有意义,但这可能是因为我已经习惯了。谢谢我不太清楚为什么,但至少他们现在添加了
enum类
,所以如果您使用它,它与Java类似。