On Mon, 20 Jun 2011 02:48:30 +0000, Charles McAnany wrote: > Hi, all. I'm looking for a way to make constants that have methods > without a lot of overhead. In particular, a way to define a Direction > and then be able to rotate it right. Here's kind of what I have in mind: > > enum Direction{ > left, right, up, down; > > public Direction rotateRight(){ > switch(this){ > case left: > return up; > case up: > return right; > case right: > return down; > case down: > return left; > } > }
It may be acceptable to change a Direction variable freely in a different context. So I think that the requirement on how a Direction variable change should not be on the Direction type itself. How about a Dial that has a Direction: struct Dial { Direction direction_; void rotateRight(int count = 1) { direction_ += count; direction_ %= Direction.sizeof; } void rotateLeft(int count = 1) { rotateRight(-count); } @property Direction direction() const { return direction_; } } Ali