Cách tốt nhất để thực hiện một liệt kê với các giá trị tròn và các hàm thích hợp để chuyển đổi từ một giá trị này sang giá trị khác là gì?Thực hiện các giá trị enum tròn
Ví dụ:
enum class Direction {
NORTH, EAST, SOUTH, WEST
};
constexpr Direction left(Direction d) {
return (Direction)((std::underlying_type<Directions>::type(d) - 1) % 4);
}
Tuy nhiên, tôi cảm thấy rằng đây là lỗi dễ bị và thường không đọc được. Có cách nào thích hợp hơn để đối phó với loại liệt kê này không?
chính tả nó ra một cách rõ ràng với một bốn trường hợp chuyển đổi tuyên bố? Đó sẽ là lựa chọn dễ đọc nhất. – RichieHindle
Điều gì xảy ra nếu có nhiều giá trị hơn LOTS? – Svalorzen
Có thể đọc được nhiều hơn cho tôi nếu bạn thay đổi 'left' thành' nextCounterclockwise' (hoặc có thể 'nextCCW' trong ngắn) :-D – deepmax