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类似。