web-dev-qa-db-ja.com

C ++で双方向に4つの列挙型クラス値を循環的に反復する方法

私が持っています:

enum class orientation {
  North,
  East,
  South,
  West
};

インスタンスを左(北=>西)および右(西=>北)に回転させます。
しかし、それらを数値に変換したくありません。読みやすさと意図を損ない、最後の数値から最初の数値にジャンプすることは奇妙なことだからです。

私はたくさんの解決策を思いつきましたが、すべてが一種の不十分です:(

7
Lukas Salich

Orientationというクラスを作成します(たとえば)。列挙のメンバー変数(orientation)を与えます。ゲッター/セッターを定義し、増分および減分演算子(またはrotate_leftおよびrotate_rightこれらの名前がより適切であれば)。これをクラス内のすべての実装の詳細にします。

バリーが提案したロジックを使用できます。しかし、誰もそれを扱う必要がないクラスにそれを埋めてください。

1
Marshall Clow