Quote:
2. Maintenance and error proneness. - Because you have to assign each integer value, a class with hundreds of values is more prone to duplicates, either by careless assignment or typo whereas enum value assignment is automatic. Inserting a value in between other values would be quite difficult for the static functions.
I think that we have to take this into perspective. Are we likely to use this with hundreds of values? Meyers' example was with dates, in particular a Month class. There are only twelve months in a year, and this status quo is likely to stay for the duration of our lifetimes. Likewise, there are four cardinal directions, and this is not likely to change either.
Quote:
3. Efficiency - Every time you change a direction, with the static method you create a new temp object which calls a constructor, destructor and assignment operator.
I agree, but the objects in question are not likely to be heavyweight in construction, assignment and destruction, and this factor may even prove to be negligible.