这样做有没有意义:
namespace status{
enum status{
ok,
error
};
}
并像那样使用它 status::ok
或者我应该这样做:
enum status{
status_ok,
status_error
};
并像这样使用它status_ok
?
更新: 使用 C++11,您现在应该这样做:
enum class status {
ok,
error
};
并像这样使用:status::ok
最佳答案
我个人不喜欢第二种变体,因为 status_
部分对我来说似乎是多余的。以前的版本避免了这个问题,但是有一个类型 status::status
看起来也很奇怪。此外,命名空间可以修改,所以如果有人做了类似的事情
namespace status {
void error( const char *msg );
}
你会得到一个编译器错误,因为函数 error
与你的 enum
值冲突。
我更喜欢使用第三种变体:
struct MouseButton {
enum Value {
Left, Middle, Right
};
};
这让我可以编写类似的函数
void handleMouseButton( MouseButton::Value b ) {
switch ( b ) {
case MouseButton::Left: // ...
case MouseButton::Middle: // ...
case MouseButton::Right: // ...
}
}
关于c++ - 命名空间中的枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7090130/