【发布时间】:2013-04-20 20:32:47
【问题描述】:
用循环值实现枚举的最佳方法是什么,以及从一个值转换到另一个值的适当函数?
例如:
enum class Direction {
NORTH, EAST, SOUTH, WEST
};
constexpr Direction left(Direction d) {
return (Direction)((std::underlying_type<Directions>::type(d) - 1) % 4);
}
但是,我觉得这很容易出错并且通常不可读。有没有更合适的方法来处理这种类型的枚举?
【问题讨论】:
-
用四格 switch 语句明确拼写出来?那将是最易读的选项。
-
如果有更多的值怎么办?
-
如果您将
left更改为nextCounterclockwise(或者简而言之nextCCW),对我来说更具可读性:-D