我注意到,如果我使用Microsoft Visual Studio Express 2013在C ++中执行以下操作:
namespace LogLevelEnum {
enum Type {
ALL,
FINEST,
FINE,
INFO,
WARNING,
SEVERE,
OFF
};
}
typedef LogLevelEnum::Type LogLevel;
我可以使用诸如和之类的东西来访问枚举项,但不能仅仅通过or来进行。我之所以喜欢它,是因为它不会在包围的名称空间中放置太多符号。LogLevel::INFO
LogLevel::WARNING
INFO
WARNING
但是,我想知道这是否是标准行为。我知道可以使用::
运算符对类和名称空间进行索引,但是考虑到它们只是将所有内容都转储到其所在的名称空间中,因此对于枚举也没有多大意义。
但是,我想知道这是否是标准行为。
是的,前提是您使用的是C ++ 11兼容的编译器,并且按照标准,您引用的是C ++ 11标准。
但不能仅通过执行INFO或WARNING来完成。
这是因为枚举在名称空间范围内。您尝试过LogLevelEnum ::INFO
还是LogLevelEnum ::WARNING
?
在C ++中声明枚举而不膨胀名称空间的好方法
使用作用域枚举,即enum struct | class
不是enum
在定义枚举。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句