У меня есть enum, который выглядит так:
enum Suit {Clubs, Diamonds, Hearts, Spades};
Я хочу перегрузить оператор приращения, чтобы я мог легко зациклить этих четырех парней.
Когда переменная - Клубы, Алмазы или Сердца, проблема не возникает. Это состояние Пики, которое доставляет мне небольшие неприятности.
Моим первым инстинктом было определить его так, чтобы, когда переменная была пиковой, приращение устанавливало ее равной трефам. Проблема в том, что это, кажется, делает невозможным цикл по 4 значениям в перечислении.
Если я сделаю что-то вроде
for(Suit i=Clubs;i<Spades;++i)
{cout<<i<<endl;}
тогда мой вывод идет только в Hearts.
Если я сделаю
for(suit i=Clubs;i<=Spades;++i)
{cout<<i<<endl;}
тогда мой вывод просто зацикливается навсегда!
Итак, я, очевидно, могу придумать несколько обходных путей для этого ... Я просто не уверен, что делает с идиоматическим C ++.
Должен ли я переопределить приращение так, чтобы попытка приращения лопатки приводила к лопатам? или может быть исключение?
Повторюсь: я определенно могу придумать несколько хакерских способов решить эту проблему. Я просто хочу, чтобы руководство опытных программистов сообщило мне, что, по их мнению, было бы наиболее "нормальным" способом решения проблемы.